emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/geiser-guile 0c21feb: Manual search: include Concept Index


From: ELPA Syncer
Subject: [nongnu] elpa/geiser-guile 0c21feb: Manual search: include Concept Index and non-symbol searches
Date: Sun, 19 Dec 2021 20:57:51 -0500 (EST)

branch: elpa/geiser-guile
commit 0c21febe08a49b9705c62392fe443cac83c252b0
Author: jao <jao@gnu.org>
Commit: jao <jao@gnu.org>

    Manual search: include Concept Index and non-symbol searches
    
    Fixes issue #5, and then more.
---
 geiser-guile.el | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/geiser-guile.el b/geiser-guile.el
index e809f31..84fe23c 100644
--- a/geiser-guile.el
+++ b/geiser-guile.el
@@ -441,33 +441,38 @@ See `geiser-guile-use-declarative-modules-p'."
 
 ;;; Manual lookup
 
-(defun geiser-guile--info-spec (&optional nodes)
+(defun geiser-guile--info-spec ()
   "Return info specification for given NODES."
   (let* ((nrx "^[       ]+-+ [^:]+:[    ]*")
          (drx "\\b")
          (res (when (Info-find-file "r5rs" t)
                 `(("(r5rs)Index" nil ,nrx ,drx)))))
-    (dolist (node (or nodes geiser-guile-manual-lookup-nodes) res)
+    (dolist (node geiser-guile-manual-lookup-nodes res)
       (when (Info-find-file node t)
         (mapc (lambda (idx)
                 (add-to-list 'res
                              (list (format "(%s)%s" node idx) nil nrx drx)))
-              '("Variable Index" "Procedure Index" "R5RS Index"))))))
+              '("R5RS Index" "Concept Index" "Procedure Index" "Variable 
Index"))))))
 
-
-(info-lookup-add-help :topic 'symbol :mode 'geiser-guile-mode
+(info-lookup-add-help :topic 'symbol
+                      :mode 'geiser-guile-mode
                       :ignore-case nil
                       :regexp "[^()`',\"        \n]+"
                       :doc-spec (geiser-guile--info-spec))
 
+(defun geiser-guile--info-lookup (id)
+  (cond ((null id) (info "guile"))
+        ((ignore-errors (info-lookup-symbol (format "%s" id) 
'geiser-guile-mode) t))
+        ((and (listp id) (geiser-guile--info-lookup (car (last id)))))
+        (t (geiser-guile--info-lookup (when (listp id) (butlast id))))))
+
 (defun geiser-guile--manual-look-up (id _mod)
   "Look for ID in the Guile manuals."
-  (let ((info-lookup-other-window-flag
-         geiser-guile-manual-lookup-other-window-p))
-    (info-lookup-symbol (symbol-name id) 'geiser-guile-mode))
-  (when geiser-guile-manual-lookup-other-window-p
-    (switch-to-buffer-other-window "*info*"))
-  (search-forward (format "%s" id) nil t))
+  (let ((info-lookup-other-window-flag 
geiser-guile-manual-lookup-other-window-p))
+    (geiser-guile--info-lookup id)
+    (when geiser-guile-manual-lookup-other-window-p
+      (switch-to-buffer-other-window "*info*"))
+    (search-forward (format "%s" id) nil t)))
 
 
 ;;; Implementation definition:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]