diff options
Diffstat (limited to 'elisp')
-rw-r--r-- | elisp/geiser-impl.el | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/elisp/geiser-impl.el b/elisp/geiser-impl.el index c1dc065..a867da9 100644 --- a/elisp/geiser-impl.el +++ b/elisp/geiser-impl.el @@ -1,4 +1,4 @@ -;;; geiser-impl.el -- generic support for scheme implementations +;;; geiser-impl.el -- generic support for scheme implementations -*- lexical-binding: t; -*- ;; Copyright (C) 2009, 2010, 2012, 2013, 2015, 2016, 2019, 2021 Jose Antonio Ortega Ruiz @@ -26,13 +26,11 @@ (geiser-custom--defcustom geiser-default-implementation nil "Symbol naming the default Scheme implementation." - :type 'symbol - :group 'geiser-implementation) + :type 'symbol) (geiser-custom--defcustom geiser-active-implementations () "List of active installed Scheme implementations." - :type '(repeat symbol) - :group 'geiser-implementation) + :type '(repeat symbol)) (geiser-custom--defcustom geiser-implementations-alist nil "A map from regular expressions or directories to implementations. @@ -43,8 +41,7 @@ in order to determine its scheme flavour." (const regexp) regexp) (group :tag "Directory" (const dir) directory)) - symbol)) - :group 'geiser-implementation) + symbol))) ;;; Implementation registry: @@ -81,7 +78,7 @@ in order to determine its scheme flavour." (cadr (assq method (geiser-impl--methods impl))))) (defun geiser-impl--default-method (method) - (cadr (assoc method (mapcar 'cdr geiser-impl--local-methods)))) + (cadr (assoc method (mapcar #'cdr geiser-impl--local-methods)))) (defun geiser-impl--call-method (method impl &rest args) (let ((fun (or (geiser-impl--method method impl) @@ -99,7 +96,7 @@ in order to determine its scheme flavour." (put method 'function-documentation doc))) (defun geiser-implementation-help () - "Shows a buffer with help on defining new supported Schemes." + "Show a buffer with help on defining new supported Schemes." (interactive) (help-setup-xref (list #'geiser-implementation-help) t) (save-excursion @@ -160,11 +157,13 @@ in order to determine its scheme flavour." (when (and (listp m) (= 2 (length m)) (symbolp (car m))) - (if (functionp (cadr m)) m - `(,(car m) (lambda (&rest args) ,(cadr m)))))) + (let ((v (cadr m))) + (if (functionp v) m + `(,(car m) + ,(lambda (&rest _) v)))))) (defun geiser-impl--define (file name parent methods) - (let* ((methods (mapcar 'geiser-impl--normalize-method methods)) + (let* ((methods (mapcar #'geiser-impl--normalize-method methods)) (methods (delq nil methods)) (inherited-methods (and parent (geiser-impl--methods parent))) (methods (append methods @@ -174,7 +173,7 @@ in order to determine its scheme flavour." (geiser-impl--register file name methods))) (defmacro define-geiser-implementation (name &rest methods) - "Defines a new supported Scheme implementation. + "Define a new supported Scheme implementation. NAME can be either an unquoted symbol naming the implementation, or a two-element list (NAME PARENT), with PARENT naming another registered implementation from which to borrow methods not @@ -240,16 +239,15 @@ switcher (switch-to-NAME), and provides geiser-NAME." (defun geiser-implementation-extension (impl ext) "Add to `geiser-implementations-alist' an entry for extension EXT." - (geiser-impl--add-to-alist 'regexp (format "\\.%s$" ext) impl t)) + (geiser-impl--add-to-alist 'regexp (format "\\.%s\\'" ext) impl t)) ;;; Trying to guess the scheme implementation: (defvar-local geiser-scheme-implementation nil - "Set this buffer local variable to specify the Scheme -implementation to be used by Geiser.") + "The Scheme implementation to be used by Geiser.") -(put 'geiser-scheme-implementation 'safe-local-variable 'symbolp) +(put 'geiser-scheme-implementation 'safe-local-variable #'symbolp) (defun geiser-impl--match-impl (desc bn) (let ((rx (if (eq (car desc) 'regexp) @@ -261,7 +259,7 @@ implementation to be used by Geiser.") (defun geiser-impl--read-impl (&optional prompt impls non-req) (let* ((impls (or impls geiser-active-implementations)) - (impls (mapcar 'symbol-name impls)) + (impls (mapcar #'symbol-name impls)) (prompt (or prompt "Scheme implementation: "))) (intern (completing-read prompt impls nil (not non-req) nil geiser-impl--impl-prompt-history @@ -319,6 +317,7 @@ buffer contains Scheme code of the given implementation.") (geiser-impl--registered-value impl (nth 1 m) (nth 2 m))))))) (defmacro with--geiser-implementation (impl &rest body) + (declare (indent 1)) (let* ((mbindings (mapcar (lambda (m) `(,(nth 0 m) (geiser-impl--registered-method ,impl @@ -334,7 +333,6 @@ buffer contains Scheme code of the given implementation.") (ibindings `((geiser-impl--implementation ,impl))) (bindings (append ibindings mbindings vbindings))) `(let* ,bindings ,@body))) -(put 'with--geiser-implementation 'lisp-indent-function 1) ;;; Reload support: @@ -347,3 +345,4 @@ buffer contains Scheme code of the given implementation.") (provide 'geiser-impl) +;;; geiser-impl.el ends here |