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

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

[nongnu] elpa/geiser-guile b81b23c 228/284: Support for user-defined Gui


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-guile b81b23c 228/284: Support for user-defined Guile info nodes
Date: Sun, 1 Aug 2021 18:29:50 -0400 (EDT)

branch: elpa/geiser-guile
commit b81b23ca475bd4945bfa4096418da7a13fc814bc
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>

    Support for user-defined Guile info nodes
    
    In my debian machine, the info nodes for guile live in the "guile-2.0"
    node, rather than plain "guile".  A new customizable variable,
    geiser-guile-manual-lookup-nodes, lets now specify additional names,
    and we only add indexes to the info-lookup mode definition when the
    node actually exists.
---
 elisp/geiser-guile.el | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/elisp/geiser-guile.el b/elisp/geiser-guile.el
index da14b4e..54443b8 100644
--- a/elisp/geiser-guile.el
+++ b/elisp/geiser-guile.el
@@ -1,6 +1,6 @@
 ;; geiser-guile.el -- guile's implementation of the geiser protocols
 
-;; Copyright (C) 2009, 2010, 2011 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2011, 2012 Jose Antonio Ortega Ruiz
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the Modified BSD License. You should
@@ -109,6 +109,11 @@ effect on new REPLs. For existing ones, use the command
   :type 'boolean
   :group 'geiser-guile)
 
+(geiser-custom--defcustom geiser-guile-manual-lookup-nodes '("Guile" 
"guile-2.0")
+  "List of info nodes that, when present, are used for manual lookups"
+  :type '(repeat string)
+  :group 'geiser-guile)
+
 
 ;;; REPL support:
 
@@ -302,14 +307,22 @@ it spawn a server thread."
 
 
 ;;; Manual lookup
+
+(defun geiser-guile--info-spec (&optional 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)
+      (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"))))))
+
+
 (info-lookup-add-help :topic 'symbol :mode 'geiser-guile-mode
                       :ignore-case nil
                       :regexp "[^()`',\"       \n]+"
-                      :doc-spec
-                      '(("(r5rs)Index" nil "^[         ]+-+ [^:]+:[    ]*" 
"\\b")
-                        ("(Guile)R5RS Index" nil "^ - [^:]+: " "\\b")
-                        ("(Guile)Procedure Index" nil "^ - [^:]+: " "\\b")
-                        ("(Guile)Variable Index" nil "^ - [^:]+: " "\\b")))
+                      :doc-spec (geiser-guile--info-spec))
 
 (defun guile--manual-look-up (id mod)
   (let ((info-lookup-other-window-flag



reply via email to

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