1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-27 10:54:40 +00:00

(info-lookup-symbol-alist): Handle Emacs Lisp mode.

(info-lookup-make-completions): Catch errors one file at a time.
Use a special temp buffer, not the usual info buffer,
and never display it in a window.
This commit is contained in:
Richard M. Stallman 1997-12-26 10:47:20 +00:00
parent d2e9bfae62
commit 1eff0ba1b7

View File

@ -173,6 +173,11 @@ REFER-MODES is a list of other help modes to use.")
("(termcap)Var Index" nil
"^[ \t]*`" "'"))
info-lookup-guess-c-symbol)
(emacs-lisp-mode
"[-_a-zA-Z+=*:&%$#@!^~][-_a-zA-Z0-9+=*:&%$#@!^~]*" nil
("(elisp)Index" nil
"^[ \t]+- \\(Function\\|Macro\\|User Option\\|Variable\\): .*\\<"
"\\>"))
(m4-mode
"[_a-zA-Z][_a-zA-Z0-9]*" nil
(("(m4)Macro index"))
@ -353,26 +358,28 @@ The default file name is the one found at point."
(defun info-lookup-make-completions (topic mode)
"Create a unique alist from all index entries."
(condition-case nil
(let ((doc-spec (info-lookup->doc-spec topic mode))
(regexp (concat "^\\(" (info-lookup->regexp topic mode)
"\\)\\([ \t].*\\)?$"))
node trans entry item prefix result)
(save-window-excursion
(info)
(while doc-spec
(setq node (nth 0 (car doc-spec))
trans (cond ((eq (nth 1 (car doc-spec)) nil)
(lambda (arg)
(if (string-match regexp arg)
(match-string 1 arg))))
((stringp (nth 1 (car doc-spec)))
(setq prefix (nth 1 (car doc-spec)))
(lambda (arg)
(if (string-match "^\\([^: \t\n]+\\)" arg)
(concat prefix (match-string 1 arg)))))
(t (nth 1 (car doc-spec)))))
(message "Processing Info node \"%s\"..." node)
(let ((doc-spec (info-lookup->doc-spec topic mode))
(regexp (concat "^\\(" (info-lookup->regexp topic mode)
"\\)\\([ \t].*\\)?$"))
node trans entry item prefix result
(buffer (get-buffer-create " temp-info-look")))
(with-current-buffer buffer
(Info-mode))
(while doc-spec
(setq node (nth 0 (car doc-spec))
trans (cond ((eq (nth 1 (car doc-spec)) nil)
(lambda (arg)
(if (string-match regexp arg)
(match-string 1 arg))))
((stringp (nth 1 (car doc-spec)))
(setq prefix (nth 1 (car doc-spec)))
(lambda (arg)
(if (string-match "^\\([^: \t\n]+\\)" arg)
(concat prefix (match-string 1 arg)))))
(t (nth 1 (car doc-spec)))))
(condition-case nil
(with-current-buffer buffer
(message "Processing Info node `%s'..." node)
(Info-goto-node node)
(goto-char (point-min))
(and (search-forward "\n* Menu:" nil t)
@ -384,12 +391,11 @@ The default file name is the one found at point."
(and (string-equal entry item)
(setq entry nil))
(or (assoc item result)
(setq result (cons (cons item entry) result)))))
(message "Processing Info node \"%s\"... done" node)
(setq doc-spec (cdr doc-spec)))
(Info-directory))
result)
(error nil)))
(setq result (cons (cons item entry) result))))))
(error nil))
(message "Processing Info node `%s'...done" node)
(setq doc-spec (cdr doc-spec)))
result))
(defun info-lookup-guess-default (topic mode)
"Pick up default item at point (with favor to look back).