summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2022-10-21 01:26:04 +0100
committerjao <jao@gnu.org>2022-10-21 01:26:04 +0100
commit2174f90b64343c1af76c8e5469d5e4b69d709c08 (patch)
tree7a7da77640deefcaee345bbf86fc62077b919c4d
parent4ab96cb80ad1fce1297776bc0fc6dc5093a41bd5 (diff)
downloadgeiser-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.el3
-rw-r--r--elisp/geiser-edit.el19
-rw-r--r--readme.org1
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))))
diff --git a/readme.org b/readme.org
index 22632f1..e836c36 100644
--- a/readme.org
+++ b/readme.org
@@ -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]]