Function: info-lookup-make-completions
info-lookup-make-completions is a byte-compiled function defined in
info-look.el.gz.
Signature
(info-lookup-make-completions TOPIC MODE)
Documentation
Create a unique alist from all index entries.
Source Code
;; Defined in /usr/src/emacs/lisp/info-look.el.gz
(defun info-lookup-make-completions (topic mode)
"Create a unique alist from all index entries."
(let ((doc-spec (info-lookup->doc-spec topic mode))
(regexp (concat "^\\(" (info-lookup->regexp topic mode)
"\\)\\([ \t].*\\)?$"))
Info-history-list Info-fontify-maximum-menu-size
node trans entry item prefix result doc-found
(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)))))
(with-current-buffer buffer
(message "Processing Info node `%s'..." node)
(when (condition-case nil
(progn
(Info-goto-node node)
(setq doc-found t))
(error
(message "Cannot access Info node `%s'" node)
(sit-for 1)
nil))
(condition-case nil
(progn
(goto-char (point-min))
(and (search-forward "\n* Menu:" nil t)
(while (re-search-forward "\n\\* \\(.*\\): " nil t)
(setq entry (match-string 1)
item (funcall trans entry))
;; `trans' can return nil if the regexp doesn't match.
(when (and item
;; Sometimes there's more than one Menu:
(not (string= entry "Menu")))
(and (info-lookup->ignore-case topic mode)
(setq item (downcase item)))
(and (string-equal entry item)
(setq entry nil))
(and (or (assoc item result)
(setq result (cons (cons item entry)
result))))))))
(error nil))))
(message "Processing Info node `%s'...done" node)
(setq doc-spec (cdr doc-spec)))
(or doc-found
(error "Info documentation for lookup was not found"))
result))