diff options
Diffstat (limited to 'elisp')
-rw-r--r-- | elisp/geiser-impl.el | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/elisp/geiser-impl.el b/elisp/geiser-impl.el index 767a7cf..4239f1e 100644 --- a/elisp/geiser-impl.el +++ b/elisp/geiser-impl.el @@ -68,7 +68,8 @@ determine its scheme flavour." (add-to-list 'geiser-impl--impls impl))) (defun geiser-impl--unregister (impl) - (setq geiser-impl--impls (remove impl geiser-impl--impls))) + (setq geiser-impl--impls (remove impl geiser-impl--impls)) + (ignore-errors (unload-feature (geiser-impl--impl-feature impl)))) (defvar geiser-impl--default-implementation geiser-impl-default-implementation) @@ -240,7 +241,7 @@ implementation to be used by Geiser.")) "Register a new Scheme implementation." (interactive) (let ((current geiser-impl-installed-implementations) - (impl (geiser-impl--read-impl "New implementation: " nil t))) + (impl (geiser-impl--read-impl "New Scheme implementation: " nil t))) (unless (geiser-impl--register impl) (error "geiser-%s.el not found in load-path" impl)) (when (and (not (memq impl current)) @@ -248,6 +249,17 @@ implementation to be used by Geiser.")) (customize-save-variable 'geiser-impl-installed-implementations (cons impl current))))) +(defun geiser-unregister-implementation () + "Unregister an installed Scheme implementation." + (interactive) + (let* ((current geiser-impl-installed-implementations) + (impl (geiser-impl--read-impl "Forget implementation: " current))) + (geiser-impl--unregister impl) + (when (and (impl current) + (y-or-n-p "Forget permanently using customize? ")) + (customize-save-variable + 'geiser-impl-installed-implementations (remove impl current))))) + ;;; Unload support |