Emacs Info Expression

By Susam Pal on 03 Dec 2025

On #emacs IRC or Matrix channels, we often share references to the built-in Emacs documentation as Elisp expressions that look like this:

(info "(emacs) Basic Undo")

Here is another example:

(info "(emacs) Word Search")

This is a common practice in the Emacs community even though all of the Emacs manual is available on the World Wide Web too. For example, the section referred to in the above expression eis available here: GNU Emacs Manual: Word Search. The reason for sharing Elisp expressions like this is likely partly tradition and partly convenience. Many Emacs users are logged into IRC networks via Emacs itself, so once the recipient sees an Elisp expression like the above one in their chat buffer, visiting the corresponding manual page is a simple matter of placing the cursor right after the closing parenthesis and typing C-x C-e.

But isn't it clumsy for the sender to type Elisp expressions like this merely to share a pointer to a section of a manual with others? Turns out, it is not. This is Emacs! So of course there are key-bindings to do this.

Say, while helping another Emacs user we type M-x info-apropos RET version control RET and land on the section "Branches" and realise that this is the section that the person we are trying to help should read. Now when we are on this section, we can simply type c and Emacs will copy the name of the current Info node to the kill ring. The name looks like this:

(emacs) Branches

While this is handy in some situations, it isn't the info expression we want. It's just the Info node name. To copy the complete info expression with the node name, we need to use the zero prefix argument with the c key. So when we are on the section "Branches", if we type C-0 c, the following expression is copied to the kill ring:

(info "(emacs) Branches")

The person who receives this info expression can visit the corresponding section of the manual simply by evaluating it. For example, after copying the expression in Emacs, they could type C-y C-x C-e to paste the expression into a buffer and evaluate it immediately. Alternatively, they might want to type M-: C-y RET to bring the eval-expression minibuffer, paste the expression there and evaluate it.

Comments | #emacs | #technology