Emacs Info Expression
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.