diff options
author | jao <jao@gnu.org> | 2022-10-21 01:26:04 +0100 |
---|---|---|
committer | jao <jao@gnu.org> | 2022-10-21 01:26:04 +0100 |
commit | 2174f90b64343c1af76c8e5469d5e4b69d709c08 (patch) | |
tree | 7a7da77640deefcaee345bbf86fc62077b919c4d | |
parent | 4ab96cb80ad1fce1297776bc0fc6dc5093a41bd5 (diff) | |
download | geiser-2174f90b64343c1af76c8e5469d5e4b69d709c08.tar.gz geiser-2174f90b64343c1af76c8e5469d5e4b69d709c08.tar.bz2 |
more tweaks to regexp signature finding
and its use in autodoc (for instance, skip it when in the REPL).
-rw-r--r-- | elisp/geiser-autodoc.el | 3 | ||||
-rw-r--r-- | elisp/geiser-edit.el | 19 | ||||
-rw-r--r-- | readme.org | 1 |
3 files changed, 16 insertions, 7 deletions
diff --git a/elisp/geiser-autodoc.el b/elisp/geiser-autodoc.el index 924fadb..f18a6ed 100644 --- a/elisp/geiser-autodoc.el +++ b/elisp/geiser-autodoc.el @@ -185,7 +185,8 @@ you can set this variable to nil to avoid them." (s)) (while (and p (not s)) (setq s (or (cdr (assoc (car p) signs)) - (cdr (geiser-edit--find-def (car p))))) + (and geiser-mode + (cdr (geiser-edit--find-def (car p) t))))) (unless s (setq p (car path) path (cdr path)))) (cond ((stringp s) s) (s (geiser-autodoc--str p s))))))) diff --git a/elisp/geiser-edit.el b/elisp/geiser-edit.el index f2ed57a..06340fb 100644 --- a/elisp/geiser-edit.el +++ b/elisp/geiser-edit.el @@ -89,7 +89,10 @@ or following links in error buffers.") (defsubst geiser-edit--def-re (thing) (let ((sx (regexp-quote (format "%s" thing)))) - (format "(%s[[:space:]]+\\((%s\\_>[^)]*)\\|\\(\\_<%s\\_>\\) *\\([^\n]*\\))\\)" + (format (concat "(%s[[:space:]]+\\(" + "(%s\\_>[^)]*)\\|" + "\\(\\_<%s\\_>\\) *\\([^\n]*?\\)[)\n]" + "\\)") geiser-edit--def-re sx sx))) (defsubst geiser-edit--def-re* (thing) @@ -97,15 +100,21 @@ or following links in error buffers.") geiser-edit--def-re* (regexp-quote (format "%s" thing)))) -(defun geiser-edit--find-def (symbol) +(defun geiser-edit--find-def (symbol &optional args) (save-excursion (goto-char (point-min)) (when (or (re-search-forward (geiser-edit--def-re symbol) nil t) (re-search-forward (geiser-edit--def-re* symbol) nil t)) (cons (match-beginning 0) - (if (match-string 2) - (concat (match-string 2) " => " (match-string 3)) - (match-string 1)))))) + (and args + (if (match-string 2) + (let* ((v (or (match-string 3) "")) + (v (and (not (string-blank-p v)) v))) + (concat (match-string 2) + (and v " => ") + v + (and v (string-prefix-p "(" v) " ..."))) + (match-string 1))))))) (defsubst geiser-edit--symbol-re (thing) (format "\\_<%s\\_>" (regexp-quote (format "%s" thing)))) @@ -45,7 +45,6 @@ - Stklos 1.50, via [[https://gitlab.com/emacs-geiser/stklos][geiser-stklos]] * Installation - *** Using ELPA Geiser is available in the ELPA repositories [[https://elpa.nongnu.org/nongnu/geiser.html][NonGNU ELPA]] |