From c6acac244447cac2b4580658b40f3bde2425b8c4 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Mon, 6 Sep 2010 07:26:54 +0200 Subject: [PATCH] Allow loading byte-compiled Geiser without make install --- README | 14 +++++++++++--- configure.ac | 3 ++- doc/install.texi | 20 +++++++++++++++++--- elisp/Makefile.am | 8 +++++--- elisp/geiser-load.el.in | 8 ++++++++ elisp/geiser-reload.el | 14 +++++++------- elisp/geiser.el | 26 +++++++++++++------------- 7 files changed, 63 insertions(+), 30 deletions(-) create mode 100644 elisp/geiser-load.el.in diff --git a/README b/README index d2acd6f..001bd63 100644 --- a/README +++ b/README @@ -43,12 +43,20 @@ $ mkdir build; cd build - Configure and make: $ ../configure && make - - Install it with: + + Now, you can use the byte-compiled Geiser in place by adding to + your .emacs: + + (load "/build/elisp/geiser-load") + + or, alternatively, install it with: + $ make install (you might need to get root access, depending on your installation - directory) and require 'geiser-install (not 'geiser, mind you) in - your emacs initialization file: + directory) and, instead of the above load forms, require + 'geiser-install (not 'geiser, mind you) in your emacs + initialization file: (require 'geiser-install) diff --git a/configure.ac b/configure.ac index f8770ab..1a70214 100644 --- a/configure.ac +++ b/configure.ac @@ -8,7 +8,7 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -AC_INIT([GNU Geiser],[0.0.7],[jao@gnu.org],geiser) +AC_INIT([GNU Geiser],[0.1],[jao@gnu.org],geiser) AC_CONFIG_SRCDIR([elisp/geiser.el]) AM_INIT_AUTOMAKE @@ -23,6 +23,7 @@ AC_CONFIG_FILES([ Makefile elisp/Makefile elisp/geiser-version.el +elisp/geiser-load.el scheme/Makefile doc/Makefile ]) diff --git a/doc/install.texi b/doc/install.texi index 69cc4c6..2362aa9 100644 --- a/doc/install.texi +++ b/doc/install.texi @@ -53,12 +53,14 @@ sake of concreteness, let's assume you put its source in the directory line to your Emacs initialisation file (be it @file{~/.emacs} or any of its moral equivalents): @example -(load-file "~/lisp/geiser/geiser.el") +(load-file "~/lisp/geiser/elisp/geiser.el") @end example @noindent or simply evaluate that form inside Emacs (you wouldn't kill a friend just to start using Geiser, would you?). That's it: you're ready to -@ref{quick-start,,go}. +@ref{quick-start,,go}. You can even continue to read this fine manual +inside Emacs by opening @file{doc/geiser.info} using @kbd{C-u C-h +i}. @cindex byte-compilation What? You still here? I promise the above is all that's needed to start @@ -79,9 +81,21 @@ $ ../configure $ make all +@end example +Now you have two options: loading the byte-compiled Geiser from the +@file{elisp} subdirectory, or installing it system-wide. To load the +bytecode from here, add this line to your initialisation file: +@example +(load "~/lisp/geiser/build/elisp/geiser-load") +@end example +and eval that form or (gasp!) restart Emacs and you're done. Yes, that's +@code{load} and @file{geiser-load} instead of @code{load-file} and +@file{geiser.el}. + +If you prefer a system-wide installation, just type: +@example $ sudo make install @end example -@noindent With the above spell, Geiser will be compiled and installed in a safe place inside Emacs load path. To load it into Emacs you'll need, @i{instead} of the @code{load-file} form above, the following line in diff --git a/elisp/Makefile.am b/elisp/Makefile.am index 11f2178..1f1ca76 100644 --- a/elisp/Makefile.am +++ b/elisp/Makefile.am @@ -1,4 +1,4 @@ -EXTRA_DIST = geiser-install.el.in +EXTRA_DIST = geiser-install.el.in geiser-load.el.in dist_lisp_LISP = \ geiser-autodoc.el \ @@ -27,9 +27,11 @@ dist_lisp_LISP = \ geiser-version.el lisp_LISP = geiser-install.el +noinst_LISP = geiser-load.el -CLEANFILES = geiser-install.el +CLEANFILES = geiser-install.el geiser-load.el geiser-install.el: $(srcdir)/geiser.el $(srcdir)/geiser-install.el.in - @sed -e "s|@SCHEME_DIR[@]|$(datarootdir)/geiser|" $(srcdir)/geiser-install.el.in >$@ + @sed -e "s|@SCHEME_DIR[@]|$(datarootdir)/geiser|" \ + $(srcdir)/geiser-install.el.in >$@ diff --git a/elisp/geiser-load.el.in b/elisp/geiser-load.el.in new file mode 100644 index 0000000..746558f --- /dev/null +++ b/elisp/geiser-load.el.in @@ -0,0 +1,8 @@ +(setq geiser-elisp-dir (file-name-directory load-file-name)) +(add-to-list 'load-path geiser-elisp-dir) + +(require 'geiser) + +(setq geiser-scheme-dir "@abs_top_srcdir@/scheme") + +(provide 'geiser-load) diff --git a/elisp/geiser-reload.el b/elisp/geiser-reload.el index 5602cd1..a5c0125 100644 --- a/elisp/geiser-reload.el +++ b/elisp/geiser-reload.el @@ -16,6 +16,8 @@ (require 'geiser-custom) (require 'geiser-base) (require 'geiser) +(require 'geiser-load nil t) +(require 'geiser-install nil t) ;;; Reload: @@ -24,8 +26,8 @@ (quote '( geiser-mode geiser-repl - geiser-xref geiser-doc + geiser-xref geiser-compile geiser-debug geiser-company @@ -35,15 +37,15 @@ geiser-eval geiser-connection geiser-syntax - geiser-log geiser-menu geiser-impl geiser-custom - geiser-base + geiser-log geiser-popup + geiser-base + geiser-version geiser-install geiser - geiser-version ))) (defun geiser-unload () @@ -66,8 +68,7 @@ loaded again." (unless (or (file-exists-p (expand-file-name "geiser-reload.el" dir)) (file-exists-p (expand-file-name "geiser-reload.elc" dir))) (error "%s does not contain Geiser!" dir)) - (let ((installed (featurep 'geiser-install)) - (memo (geiser-custom--memoized-state)) + (let ((memo (geiser-custom--memoized-state)) (repls (geiser-repl--repl-list)) (buffers (geiser-mode--buffers))) (geiser-unload) @@ -75,7 +76,6 @@ loaded again." (add-to-list 'load-path dir) (mapc (lambda (x) (set (car x) (cdr x))) memo) (require 'geiser-reload) - (when installed (require 'geiser-install nil t)) (geiser-repl--restore repls) (geiser-mode--restore buffers) (message "Geiser reloaded!")))) diff --git a/elisp/geiser.el b/elisp/geiser.el index b241b78..8034803 100644 --- a/elisp/geiser.el +++ b/elisp/geiser.el @@ -26,40 +26,40 @@ ;;; Autoloads: -(autoload 'geiser-version "geiser-version.el" "Echo Geiser's version." t) +(autoload 'geiser-version "geiser-version" "Echo Geiser's version." t) -(autoload 'geiser-unload "geiser-reload.el" "Unload all Geiser code." t) +(autoload 'geiser-unload "geiser-reload" "Unload all Geiser code." t) -(autoload 'geiser-reload "geiser-reload.el" "Reload Geiser code." t) +(autoload 'geiser-reload "geiser-reload" "Reload Geiser code." t) -(autoload 'geiser "geiser-repl.el" +(autoload 'geiser "geiser-repl" "Start a Geiser REPL, or switch to a running one." t) -(autoload 'run-geiser "geiser-repl.el" +(autoload 'run-geiser "geiser-repl" "Start a Geiser REPL." t) -(autoload 'switch-to-geiser "geiser-guile.el" +(autoload 'switch-to-geiser "geiser-guile" "Switch to a running one Geiser REPL." t) -(autoload 'run-guile "geiser-guile.el" +(autoload 'run-guile "geiser-guile" "Start a Geiser Guile REPL, or switch to a running one." t) -(autoload 'switch-to-guile "geiser-guile.el" +(autoload 'switch-to-guile "geiser-guile" "Start a Geiser Guile REPL, or switch to a running one." t) -(autoload 'run-racket "geiser-racket.el" +(autoload 'run-racket "geiser-racket" "Start a Geiser Racket REPL, or switch to a running one." t) -(autoload 'switch-to-racket "geiser-guile.el" +(autoload 'switch-to-racket "geiser-guile" "Start a Geiser Racket REPL, or switch to a running one." t) -(autoload 'geiser-mode "geiser-mode.el" +(autoload 'geiser-mode "geiser-mode" "Minor mode adding Geiser REPL interaction to Scheme buffers." t) -(autoload 'turn-on-geiser-mode "geiser-mode.el" +(autoload 'turn-on-geiser-mode "geiser-mode" "Enable Geiser's mode (useful in Scheme buffers)." t) -(autoload 'turn-off-geiser-mode "geiser-mode.el" +(autoload 'turn-off-geiser-mode "geiser-mode" "Disable Geiser's mode (useful in Scheme buffers)." t) (mapc (lambda (group) -- 2.11.4.GIT