summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2012-06-09 14:24:22 +0200
committerJose Antonio Ortega Ruiz <jao@gnu.org>2012-06-09 14:24:22 +0200
commitb81b23ca475bd4945bfa4096418da7a13fc814bc (patch)
tree4d0e0af9f7fcaf55f2d1ec73720c7d9a53f24dda /elisp
parent1421a7172cd41e3660a5f2eab23b32bb652ebaf9 (diff)
downloadgeiser-guile-b81b23ca475bd4945bfa4096418da7a13fc814bc.tar.gz
geiser-guile-b81b23ca475bd4945bfa4096418da7a13fc814bc.tar.bz2
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.
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-guile.el25
1 files 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