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:
parent
d2e9bfae62
commit
1eff0ba1b7
@ -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).
|
||||
|
Loading…
Reference in New Issue
Block a user