In this section we describe functions for creating, accessing and altering syntax tables.
function make-syntax-table \&optional table
This function creates a new syntax table. If
table is non-
nil, the parent of the new syntax table is
table; otherwise, the parent is the standard syntax table.
In the new syntax table, all characters are initially given the “inherit" (‘
@’) syntax class, i.e., their syntax is inherited from the parent table (see Syntax Class Table).
function copy-syntax-table \&optional table
This function constructs a copy of
table and returns it. If
table is omitted or
nil, it returns a copy of the standard syntax table. Otherwise, an error is signaled if
table is not a syntax table.
command modify-syntax-entry char syntax-descriptor \&optional table
This function sets the syntax entry for
char according to
char must be a character, or a cons cell of the form
(min . max); in the latter case, the function sets the syntax entries for all characters in the range between
The syntax is changed only for
table, which defaults to the current buffer’s syntax table, and not in any other syntax table.
syntax-descriptor is a syntax descriptor, i.e., a string whose first character is a syntax class designator and whose second and subsequent characters optionally specify a matching character and syntax flags. See Syntax Descriptors. An error is signaled if
syntax-descriptor is not a valid syntax descriptor.
This function always returns
nil. The old syntax information in the table for this character is discarded.
;; Put the space character in class whitespace.
(modify-syntax-entry ?\s " ")
;; Make ‘$’ an open parenthesis character,
;; with ‘^’ as its matching close.
(modify-syntax-entry ?$ "(^")
;; Make ‘^’ a close parenthesis character,
;; with ‘$’ as its matching open.
(modify-syntax-entry ?^ ")$")
;; Make ‘/’ a punctuation character,
;; the first character of a start-comment sequence,
;; and the second character of an end-comment sequence.
;; This is used in C mode.
(modify-syntax-entry ?/ ". 14")
function char-syntax character
This function returns the syntax class of
character, represented by its designator character (see Syntax Class Table). This returns only the class, not its matching character or syntax flags.
The following examples apply to C mode. (We use
string to make it easier to see the character returned by
;; Space characters have whitespace syntax class.
(string (char-syntax ?\s))
⇒ " "
;; Forward slash characters have punctuation syntax.
;; Note that this char-syntax call does not reveal
;; that it is also part of comment-start and -end sequences.
(string (char-syntax ?/))
;; Open parenthesis characters have open parenthesis syntax.
;; Note that this char-syntax call does not reveal that
;; it has a matching character, ‘)’.
(string (char-syntax ?\())
function set-syntax-table table
This function makes
table the syntax table for the current buffer. It returns
This function returns the current syntax table, which is the table for the current buffer.
command describe-syntax \&optional buffer
This command displays the contents of the syntax table of
buffer (by default, the current buffer) in a help buffer.
macro with-syntax-table table body…
This macro executes
table as the current syntax table. It returns the value of the last form in
body, after restoring the old current syntax table.
Since each buffer has its own current syntax table, we should make that more precise:
with-syntax-table temporarily alters the current syntax table of whichever buffer is current at the time the macro execution starts. Other buffers are not affected.