Function: prolog-build-info-alist
prolog-build-info-alist is a byte-compiled function defined in
prolog.el.gz.
Signature
(prolog-build-info-alist &optional VERBOSE)
Documentation
Build an alist of all builtins and library predicates.
Each element is of the form ("NAME/ARITY" . (INFO-NODE1 INFO-NODE2 ...)). Typically there is just one Info node associated with each name If an optional argument VERBOSE is non-nil, print messages at the beginning and end of list building.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/prolog.el.gz
(defun prolog-build-info-alist (&optional verbose)
"Build an alist of all builtins and library predicates.
Each element is of the form (\"NAME/ARITY\" . (INFO-NODE1 INFO-NODE2 ...)).
Typically there is just one Info node associated with each name
If an optional argument VERBOSE is non-nil, print messages at the beginning
and end of list building."
(if verbose
(message "Building info alist..."))
(setq prolog-info-alist
(let ((l ())
(last-entry (cons "" ())))
(save-excursion
(save-window-excursion
;; select any window but the minibuffer (as we cannot switch
;; buffers in minibuffer window.
;; I am not sure this is the right/best way
(if (active-minibuffer-window) ; nil if none active
(select-window (next-window)))
;; Do this after going away from minibuffer window
(save-window-excursion
(info))
(Info-goto-node prolog-info-predicate-index)
(goto-char (point-min))
(while (re-search-forward
"^\\* \\(.+\\)/\\([0-9]+\\)\\([^\n:*]*\\):" nil t)
(let* ((name (match-string 1))
(arity (string-to-number (match-string 2)))
(comment (match-string 3))
(fa (format "%s/%d%s" name arity comment))
info-node)
(beginning-of-line)
;; Extract the info node name
(setq info-node (progn
(re-search-forward ":[ \t]*\\([^:]+\\).$")
(match-string 1)
))
;; ###### Easier? (from Milan version 0.1.28)
;; (setq info-node (Info-extract-menu-node-name))
(if (equal fa (car last-entry))
(setcdr last-entry (cons info-node (cdr last-entry)))
(setq last-entry (cons fa (list info-node))
l (cons last-entry l)))))
(nreverse l)
))))
(if verbose
(message "Building info alist... done.")))