Re-discovery the Ancient Info Documentation System in the Age of LLM
21 Apr 2025So there are few notes that helped me to learn Info. Hopefully it can
bring more new users to the Info system.
Table of Contents
Travel with Info
The best time to learn difficult thing is in travelling. During my
last two-week’s trip to Singapore/Malaysian, I was reading about
Ledger Cli
causally. without putting much efforts, it clicked. It
suddenly started to make sense to me.
The more I learn, the more I want to learn more. I cannot wait for the next opportunities to open Emacs and dive into Ledger’s brilliant documentation. This is me with my Emacs in Changi Airport next to the Jewe.
I was able to apply the learning and came up with the project-rule to keep data hygiene (will blog next). The positive feedback energise me. The flight to London is ready for boarding but I don’t want stop exploring during the 14 hours flight without WIFI.
That’s where I re-discovered the Info documentation system. I used it
to read the ledger.el
library between sleep sessions 8000 feet above
the ground. Reading in plain text inside of Emacs has great benefits,
no distractions, fraction free in taking notes. it was a breeze.
Then I stepped into learning the Info documentation system itself, how to navigate, search text/index and all that. I was able to pick it up quickly, the concepts and shortcuts are native to me as an experienced Emacs user.
Why Info is not Popular?
I envisioned myself to use it to read all the documentation, e.g. Pandas library’s in Python. That would be ideal I told myself. However, I soon realised that Info documentation system is a niche tool: it is mostly used in GNU projects and Emacs libraries.
Why it is no popular? I was wondering myself. I decided to have a go myself. well, the journey to start is already full of hiccups. This is typical theme in learning legacy system, and could put many people off.
So there are few notes that helped me to learn Info. Hopefully it can bring more new users to the Info system.
dir
the Index File
The first and most important thing I realised is, in the context of
Info
, the dir
is not a directory, but a plain text file. I simply
call it index file, then the rest becomes so much clearer.
The =dir=/index file is the entry point of the Info program. it has a lists of the available Info manuals with their name, Info file location, and desecration.
Setup Info in MacOS
Then there is a bug in emacs-plus: during the installation of Emacs,
the dir
file somehow got deleted in the cleaning process. So the
manuals for the default libraries that comes with Emacs are not
available. In my case, I only have few Info from the packages I
installed post-installation, like orderlies, org-roam for example.
I took a slightly different approach to fix this problem: I kept the
system level tools separate from the Emacs’s library, so i have two
dir
files.
# manuals of system level programs
cd /opt/homebrew/share/info
for file in * ; do install-info "$file" dir; done
# manuals of Emacs and Emacs libraries
cd /opt/homebrew/share/emacs/info
for file in * ; do install-info "$file" dir; done
Then tell Emacs the locations of those dir
files as below.
(setq Info-directory-list
(list "/opt/homebrew/share/info"
"/opt/homebrew/share/info/emacs"))
Note, the convention is for each directory in the list, there is a
dir
file, on in Emacs, we are specifying the file using directory,
and the file is happened to be called dir
. I feel the naming can be
improved to avoid such confusion!
After restarting Emacs, Info will show there are about 500+ manuals
available, e.g. find
tool, mu4e
library, and Ledger3
.
Lastly, an quick note install-info
. As shown above, it is used to
install Info manuals, taking ledger3.info
as an example, to install
it requires
install-info ledger3.info /opt/homebrew/share/info/dir
After that, the following line is added to the
/opt/homebrew/share/info/dir
file.
* Ledger3: (ledger3). Command-Line Accounting
a bit of explanation:
- *: mark the starting of the entry
- Ledger3: is the node/manual name
- ledger3: inside of a parenthesis is the path to the Info file without extension.
- Command-Line Accounting: is the description of the manual.