elisp: Basic Char Syntax
2.3.3.1 Basic Char Syntax
.........................
Since characters are really integers, the printed representation of a
character is a decimal number. This is also a possible read syntax for
a character, but writing characters that way in Lisp programs is not
clear programming. You should _always_ use the special read syntax
formats that Emacs Lisp provides for characters. These syntax formats
start with a question mark.
The usual read syntax for alphanumeric characters is a question mark
followed by the character; thus, ‘?A’ for the character ‘A’, ‘?B’ for
the character ‘B’, and ‘?a’ for the character ‘a’.
For example:
?Q ⇒ 81 ?q ⇒ 113
You can use the same syntax for punctuation characters, but it is
often a good idea to add a ‘\’ so that the Emacs commands for editing
Lisp code don’t get confused. For example, ‘?\(’ is the way to write
the open-paren character. If the character is ‘\’, you _must_ use a
second ‘\’ to quote it: ‘?\\’.
You can express the characters control-g, backspace, tab, newline,
vertical tab, formfeed, space, return, del, and escape as ‘?\a’, ‘?\b’,
‘?\t’, ‘?\n’, ‘?\v’, ‘?\f’, ‘?\s’, ‘?\r’, ‘?\d’, and ‘?\e’,
respectively. (‘?\s’ followed by a dash has a different meaning—it
applies the Super modifier to the following character.) Thus,
?\a ⇒ 7 ; control-g, ‘C-g’
?\b ⇒ 8 ; backspace, <BS>, ‘C-h’
?\t ⇒ 9 ; tab, <TAB>, ‘C-i’
?\n ⇒ 10 ; newline, ‘C-j’
?\v ⇒ 11 ; vertical tab, ‘C-k’
?\f ⇒ 12 ; formfeed character, ‘C-l’
?\r ⇒ 13 ; carriage return, <RET>, ‘C-m’
?\e ⇒ 27 ; escape character, <ESC>, ‘C-[’
?\s ⇒ 32 ; space character, <SPC>
?\\ ⇒ 92 ; backslash character, ‘\’
?\d ⇒ 127 ; delete character, <DEL>
These sequences which start with backslash are also known as “escape
sequences”, because backslash plays the role of an escape character;
this has nothing to do with the character <ESC>. ‘\s’ is meant for use
in character constants; in string constants, just write the space.
A backslash is allowed, and harmless, preceding any character without
a special escape meaning; thus, ‘?\+’ is equivalent to ‘?+’. There is
no reason to add a backslash before most characters. However, you
should add a backslash before any of the characters ‘()\|;'`"#.,’ to
avoid confusing the Emacs commands for editing Lisp code. You can also
add a backslash before whitespace characters such as space, tab, newline
and formfeed. However, it is cleaner to use one of the easily readable
escape sequences, such as ‘\t’ or ‘\s’, instead of an actual whitespace
character such as a tab or a space. (If you do write backslash followed
by a space, you should write an extra space after the character constant
to separate it from the following text.)