summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-impl.el13
-rw-r--r--elisp/geiser-repl.el7
2 files changed, 12 insertions, 8 deletions
diff --git a/elisp/geiser-impl.el b/elisp/geiser-impl.el
index cb5daa8..32acade 100644
--- a/elisp/geiser-impl.el
+++ b/elisp/geiser-impl.el
@@ -64,7 +64,8 @@ determine its scheme flavour."
(defvar geiser-impl--impls nil)
(defun geiser-impl--register (impl)
- (when (require (geiser-impl--impl-feature impl) nil t)
+ (when (and (not (memq impl geiser-impl--impls))
+ (require (geiser-impl--impl-feature impl) nil t))
(add-to-list 'geiser-impl--impls impl)))
(defun geiser-impl--unregister (impl)
@@ -276,11 +277,13 @@ implementation to be used by Geiser."))
(load-library (format "geiser-%s" impl))))
+(provide 'geiser-impl)
+
+
;;; Initialization:
-(mapc 'geiser-impl--register
- (or geiser-impl-installed-implementations '(guile plt)))
+(eval-after-load 'geiser-impl
+ '(mapc 'geiser-impl--register
+ (or geiser-impl-installed-implementations '(guile plt))))
-
-(provide 'geiser-impl)
;;; geiser-impl.el ends here
diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el
index 38ebc6c..f1719e8 100644
--- a/elisp/geiser-repl.el
+++ b/elisp/geiser-repl.el
@@ -141,8 +141,8 @@ implementation name gets appended to it."
(geiser-repl--history-setup)
(geiser-con--setup-connection (current-buffer) prompt-rx)
(add-to-list 'geiser-repl--repls (current-buffer))
- (geiser-impl--startup impl)
- (geiser-repl--set-this-buffer-repl (current-buffer))))
+ (geiser-repl--set-this-buffer-repl (current-buffer))
+ (geiser-impl--startup impl)))
(defun geiser-repl--process ()
(let ((buffer (geiser-repl--get-repl geiser-impl--implementation)))
@@ -257,7 +257,8 @@ If no REPL is running, execute `run-geiser' to start a fresh one."
(set (make-local-variable 'comint-input-filter) 'geiser-repl--input-filter)
(add-hook 'kill-buffer-hook 'geiser-repl--on-kill nil t)
(comint-read-input-ring t)
- (set-process-sentinel (get-buffer-process (current-buffer)) 'geiser-repl--sentinel))
+ (set-process-sentinel (get-buffer-process (current-buffer))
+ 'geiser-repl--sentinel))
;;; geiser-repl mode: