Emacs Lisp: Character Type

By Xah Lee. Date: . Last updated: .

In emacs lisp, character is represented as integer of the character's Unicode codepoint.

For example, the char a in elisp is just 97, because its codepoint is 97.

Note: elisp “Character Type” is not technically a “type” of value in the sense of most programing languages, because there's no way to distinguish integer from char. There is no function that returns true/false on whether a value is a character type. (by comparison, there are stringp, integerp, listp, symbolp, etc.) Whether a integer is a character depends on programer's intention.

Char Syntax

Char can also be represented like this ?a for easy reading. ?a means the character a.

You can also represent char by (string-to-char "a")

(equal 97 ?a ) ;; t
(equal 97 (string-to-char "a")) ;; t

Find a Char's Codepoint

Alt+x describe-char.

Useful Function on Character

char-before
(char-before) return the unicode codepoint (integer) of character before cursor.
char-after
(char-after) return the unicode codepoint (integer) of character after cursor.
char-to-string
(char-to-string CHAR) convert a CHAR (unicode codepoint (integer)) to string of single character.
string-to-char
(string-to-char STRING) return the first char in string. (return a integer that's the char's unicode codepoint)
char-equal
(char-equal C1 C2). Return t if two characters match, optionally ignoring case. Case is ignored if case-fold-search is non-nil in the current buffer.

ASCII Control Chars and Backslash

Syntax of the form ?\char may have special meaning, depending what char is. They either represent a ASCII control character, or just the character char. For example, ?\n is the newline char. ?\\ is backslash char.

Here's a list of special meaning with the backslash:

?\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

[see ASCII Characters]

Reference

(info "(elisp) Character Type")

(info "(elisp) Basic Char Syntax")

ErgoEmacs mascot-s276x226
Buy Xah Emacs Tutorial

Elisp Write Major Mode

Basics

Package Name/Load

Syntax Table