Function: Info-finder-find-node
Info-finder-find-node is a byte-compiled function defined in
info.el.gz.
Signature
(Info-finder-find-node FILENAME NODENAME &optional NO-GOING-BACK)
Documentation
Finder-specific implementation of Info-find-node-2.
Source Code
;; Defined in /usr/src/emacs/lisp/info.el.gz
(defun Info-finder-find-node (_filename nodename &optional _no-going-back)
"Finder-specific implementation of `Info-find-node-2'."
(require 'finder)
(cond
((equal nodename "Top")
;; Display Top menu with descriptions of the keywords
(insert (format "\n\^_\nFile: %s, Node: %s, Up: (dir)\n\n"
Info-finder-file nodename))
(insert "Finder Keywords\n")
(insert "***************\n\n")
(insert "* Menu:\n\n")
(dolist (assoc (append '((all . "All package info")
(unknown . "Unknown keywords"))
finder-known-keywords))
(let ((keyword (car assoc)))
(insert (format "* %s %s.\n"
(concat (symbol-name keyword) ": "
"Keyword " (symbol-name keyword) ".")
(info--prettify-description (cdr assoc)))))))
((equal nodename "Keyword unknown")
;; Display unknown keywords
(insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
Info-finder-file nodename))
(insert "Finder Unknown Keywords\n")
(insert "***********************\n\n")
(insert "* Menu:\n\n")
(mapc
(lambda (assoc)
(insert (format "* %-14s %s.\n"
(concat (symbol-name (car assoc)) ": "
"Keyword " (symbol-name (car assoc)) ".")
(cdr assoc))))
(finder-unknown-keywords)))
((equal nodename "Keyword all")
;; Display all package info.
(insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
Info-finder-file nodename))
(insert "Finder Package Info\n")
(insert "*******************\n\n")
(insert "* Menu:\n\n")
(let (desc)
(dolist (package package--builtins)
(setq desc (cdr-safe package))
(when (vectorp desc)
(insert (format "* %-16s %s.\n"
(concat (symbol-name (car package)) "::")
(info--prettify-description (aref desc 2))))))))
((string-match "\\`Keyword " nodename)
(setq nodename (substring nodename (match-end 0)))
;; Display packages that match the keyword
;; or the list of keywords separated by comma.
(insert (format "\n\^_\nFile: %s, Node: Keyword %s, Up: Top\n\n"
Info-finder-file nodename))
(insert "Finder Packages\n")
(insert "***************\n\n")
(insert
"The following packages match the keyword ‘" nodename "’:\n\n")
(insert "* Menu:\n\n")
(let ((keywords
(mapcar #'intern (if (string-search "," nodename)
(split-string nodename ",[ \t\n]*" t)
(list nodename))))
hits desc)
(dolist (keyword keywords)
(push (copy-tree (gethash keyword finder-keywords-hash)) hits))
(setq hits (delete-dups (apply #'append hits))
;; Not a meaningful package.
hits (delete 'emacs hits)
hits (sort hits (lambda (a b) (string< (symbol-name a)
(symbol-name b)))))
(dolist (package hits)
(setq desc (cdr-safe (assq package package--builtins)))
(when (vectorp desc)
(insert (format "* %-16s %s.\n"
(concat (symbol-name package) "::")
(info--prettify-description (aref desc 2))))))))
(t
;; Display commentary section
(insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
Info-finder-file nodename))
(insert "Package Description\n")
(insert "*******************\n\n")
(insert
"Description of the package ‘" nodename "’:\n\n")
;; This assumes that a file named package.el exists,
;; which is not always true. E.g. for the nxml package,
;; there is no "nxml.el" (it's nxml-mode.el).
;; But package.el makes the same assumption.
;; I think nxml is the only exception - maybe it should be just be renamed.
(insert (or (ignore-errors (lm-commentary (find-library-name nodename)))
(insert "Can’t find package description.\n\n"))))))