Emacs Lisp: Character Type
In emacs lisp, character is represented as integer of the character's 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 is no way to distinguish integer from char. There is no function that returns true/false on whether a value is a character type. Whether a integer is a character depends on programer's intention.
Char can also be represented like this
?a for easy reading.
?a means the character “a”.
You can also represent char by
(equal 97 ?a ) ;; t (equal 97 (string-to-char "a")) ;; t
Find a Char's Codepoint
Useful Functions on Character
(char-before)return the unicode codepoint (integer) of character before cursor.
(char-after)return the unicode codepoint (integer) of character after cursor.
(char-to-string CHAR)convert a CHAR (unicode codepoint (integer)) to string of single character.
(string-to-char STRING)return the first char in string. (return a integer that's the char's unicode codepoint)
(char-equal C1 C2).
Return t if two characters match, but dependent on a Buffer Local Variable case-fold-search.
Case is ignored if case-fold-search is non-nil in the current buffer.
Warning: when at beginning of buffer,
char-beforereturn nil. Using
char-equalresult error because argument needs to be integer. So, in general, better use
eq. [see Emacs Lisp: Test Equality]
;; check if char before is a newline (char-equal (char-before ) 10)
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.
?\n is the newline char.
?\\ is backslash char.
Here's a list of special meaning with the backslash:
[see ASCII Characters]