Library info+.el extends the standard Emacs library info.el in several ways. Info+ provides:

You can have any number of such TOCs, for the same manual or for different manuals.
Outline minor mode lets you hide and show, and promote and demote, various parts of the TOC tree for a manual. And since the TOC is editable you can make other changes to it: sort parts of it, delete parts of it, duplicate parts of it, move parts around in an ad hoc way, and so on. Info+ makes the outlining commands behave, so that hidden Info text (e.g. markup text such as ‘*note’`::’ surrounding links) is kept hidden.
Especially when combined with `Info-persist-history-mode’, command `Info-change-visited-status’ (‘C-x DEL’), and the Info+ bookmarking enhancements (e.g., special link highlighting and persistently tracking the number of visits per node), ‘Info-toc-outline’ gives you a way to organize access and visibility of a manual’s nodes, to reflect how you use it.
Be aware that such highlighting is not 100% foolproof. Especially for a manual such as Emacs or Elisp, where arbitrary keys and characters can be present anywhere, the highlighting can be thrown off.
You can toggle each of the ‘Info-fontify-*-flag’ options from the ‘Info’ menu or using an ‘Info-toggle-fontify-*’ command. For example, command ‘Info-toggle-fontify-emphasis’ toggles option ‘Info-fontify-emphasis-flag’.
Here is a screenshot of the *Info* buffer, showing some of the highlighting:

Use ‘Info-merge-subnodes’ to extract a self-contained report (possibly the whole manual) from an Info manual. The report is itself an Info buffer, with hyperlinks and normal Info behavior.
There are various prefix-argument options that govern just how subnodes are treated (recursively or not, for instance). There are a few user variables that let you customize the report appearance.
Here is a screenshot of a report. I removed most of the text in each node (replacing it by a narrow band of white with “. . .”) so that I could show more than one node in the screenshot; the real report is a buffer 322 lines long.
You can convert such a report to HTML using menu Tools > HTMLize Buffer (‘mkhtml-any-buffer’) from library Lisp:mkhtml.el. For more information, see SaveAsHtml. (That code is quite old, however.)

See Also: Icicles - Info Enhancements.

Discussion and Issues

Your recognition of info-quoted-name seems like is not right, e.g. `(a list of (+ 2 3) elements) info-quoted-name highlight it. – ahei

Only if it is followed (somewhere) by a normal single-quote: '. But yes, otherwise, you are correct.

Highlighting ‘...’ or `...', and "..." strings is problematic. In general, the results are good, but there are several things that can throw it off. Fortunately, these things do not occur that commonly in manuals – but they do occur. The more typical problem is an isolated " character referred to as such in the manual (e.g. ?"). You’ll just have to live with it or, if you think it’s not worth it, customize ‘Info-fontify-quotations-flag’ to nil. – DrewAdams

OK, I see – ahei

Hi! A quick question: how to prevent info+ to split my window. I want the original info behavior, if i type M-x info, i want a full window to read. Thanks! --PasJa

Should be OK now. I had some hard-coded cruft leftover from 1999. Thx – DrewAdams

Hi! Version info in current update is inconsistent with previous one. We had Version 21.1 Update #: 4855 while currently Version is 0 with Update #: 4857 Could you correct this? Thanks! --Marcin

Hi Marcin. It is correct as is. I don’t use version information for info+.el (or for most of my other libraries either). package.el needs header field ‘Package-Requires’ to include a version number, however. (Pseudo) version ‘0’ allows any package requiring the given package to use any version of the required one.

Each of my library files has a ‘Last-Updated’ field that has the date and last `Update #’ (which is incremented each time I save the file). This is the best info to use for reporting/communicating (e.g. about bugs). Users can ignore the ‘Version’ field for most of my libraries.

Thx – DrewAdams


CategoryDocumentation CategoryHelp CategoryHypermedia CategoryModes