diff options
Diffstat (limited to 'elisp')
-rw-r--r-- | elisp/geiser-guile.el | 25 |
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 |