35.3 Syntax Table Functions
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 syntax-descriptor
. 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 min
and max
, inclusive.
The syntax is changed only for table
, which defaults to the current bufferβs syntax table, and not in any other syntax table.
The argument 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.
Examples:
;; Put the space character in class whitespace.
(modify-syntax-entry ?\s " ")
β nil
;; Make β$β an open parenthesis character,
;; with β^β as its matching close.
(modify-syntax-entry ?$ "(^")
β nil
;; Make β^β a close parenthesis character,
;; with β$β as its matching open.
(modify-syntax-entry ?^ ")$")
β nil
;; 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")
β nil
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 char-syntax
.)
;; 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 table
.
function
syntax-tableβ
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 body
using 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.