annotate lispref/syntax.texi @ 69215:ef5cd9601f14

(mh-folder-list): Fix problem with passing in a folder and getting nothing back. Fix problem with passing in empty string and getting the entire filesystem (or infinite loop). Don't append slash to folder. These fixes fix problems observed with the pick search. Thanks to Thomas Baumann for the help (closes SF #1435381).
author Bill Wohler <wohler@newt.com>
date Tue, 28 Feb 2006 23:54:53 +0000
parents 067115a6e738
children 6e24249411f1 c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 @c -*-texinfo-*-
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 @c This is part of the GNU Emacs Lisp Reference Manual.
64889
e836425ee789 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 63601
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2002, 2003,
68648
067115a6e738 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 66148
diff changeset
4 @c 2004, 2005, 2006 Free Software Foundation, Inc.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 @c See the file elisp.texi for copying conditions.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 @setfilename ../info/syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 @node Syntax Tables, Abbrevs, Searching and Matching, Top
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 @chapter Syntax Tables
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 @cindex parsing
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 @cindex syntax table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 @cindex text parsing
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 A @dfn{syntax table} specifies the syntactic textual function of each
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
14 character. This information is used by the @dfn{parsing functions}, the
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 complex movement commands, and others to determine where words, symbols,
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 and other syntactic constructs begin and end. The current syntax table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 controls the meaning of the word motion functions (@pxref{Word Motion})
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
18 and the list motion functions (@pxref{List Motion}), as well as the
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 functions in this chapter.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 @menu
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 * Basics: Syntax Basics. Basic concepts of syntax tables.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 * Desc: Syntax Descriptors. How characters are classified.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 * Syntax Table Functions:: How to create, examine and alter syntax tables.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
25 * Syntax Properties:: Overriding syntax with text properties.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 * Motion and Syntax:: Moving over characters with certain syntaxes.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 * Parsing Expressions:: Parsing balanced expressions
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 using the syntax table.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 * Standard Syntax Tables:: Syntax tables used by various major modes.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 * Syntax Table Internals:: How syntax table information is stored.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
31 * Categories:: Another way of classifying character syntax.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 @end menu
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 @node Syntax Basics
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 @section Syntax Table Concepts
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36
27193
89afca54a135 @ifinto -> @ifnottex.
Gerd Moellmann <gerd@gnu.org>
parents: 27189
diff changeset
37 @ifnottex
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 A @dfn{syntax table} provides Emacs with the information that
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 determines the syntactic use of each character in a buffer. This
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 information is used by the parsing commands, the complex movement
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 commands, and others to determine where words, symbols, and other
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 syntactic constructs begin and end. The current syntax table controls
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 the meaning of the word motion functions (@pxref{Word Motion}) and the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 list motion functions (@pxref{List Motion}) as well as the functions in
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 this chapter.
27193
89afca54a135 @ifinto -> @ifnottex.
Gerd Moellmann <gerd@gnu.org>
parents: 27189
diff changeset
46 @end ifnottex
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
48 A syntax table is a char-table (@pxref{Char-Tables}). The element at
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
49 index @var{c} describes the character with code @var{c}. The element's
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
50 value should be a list that encodes the syntax of the character in
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
51 question.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 Syntax tables are used only for moving across text, not for the Emacs
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 Lisp reader. Emacs Lisp uses built-in syntactic rules when reading Lisp
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
55 expressions, and these rules cannot be changed. (Some Lisp systems
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
56 provide ways to redefine the read syntax, but we decided to leave this
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
57 feature out of Emacs Lisp for simplicity.)
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 Each buffer has its own major mode, and each major mode has its own
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 idea of the syntactic class of various characters. For example, in Lisp
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 mode, the character @samp{;} begins a comment, but in C mode, it
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 terminates a statement. To support these variations, Emacs makes the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 choice of syntax table local to each buffer. Typically, each major
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 mode has its own syntax table and installs that table in each buffer
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
65 that uses that mode. Changing this table alters the syntax in all
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 those buffers as well as in any buffers subsequently put in that mode.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 Occasionally several similar modes share one syntax table.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 @xref{Example Major Modes}, for an example of how to set up a syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 table.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 A syntax table can inherit the data for some characters from the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 standard syntax table, while specifying other characters itself. The
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ``inherit'' syntax class means ``inherit this character's syntax from
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
74 the standard syntax table.'' Just changing the standard syntax for a
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
75 character affects all syntax tables that inherit from it.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 @defun syntax-table-p object
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
78 This function returns @code{t} if @var{object} is a syntax table.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 @node Syntax Descriptors
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 @section Syntax Descriptors
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 @cindex syntax classes
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 This section describes the syntax classes and flags that denote the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 syntax of a character, and how they are represented as a @dfn{syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 descriptor}, which is a Lisp string that you pass to
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
88 @code{modify-syntax-entry} to specify the syntax you want.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
90 The syntax table specifies a syntax class for each character. There
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
91 is no necessary relationship between the class of a character in one
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
92 syntax table and its class in any other table.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
94 Each class is designated by a mnemonic character, which serves as the
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 name of the class when you need to specify a class. Usually the
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
96 designator character is one that is often assigned that class; however,
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
97 its meaning as a designator is unvarying and independent of what syntax
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
98 that character currently has. Thus, @samp{\} as a designator character
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
99 always gives ``escape character'' syntax, regardless of what syntax
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
100 @samp{\} currently has.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 @cindex syntax descriptor
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
103 A syntax descriptor is a Lisp string that specifies a syntax class, a
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 matching character (used only for the parenthesis classes) and flags.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 The first character is the designator for a syntax class. The second
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 character is the character to match; if it is unused, put a space there.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 Then come the characters for any desired flags. If no matching
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 character or flags are needed, one character is sufficient.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
110 For example, the syntax descriptor for the character @samp{*} in C
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
111 mode is @samp{@w{. 23}} (i.e., punctuation, matching character slot
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
112 unused, second character of a comment-starter, first character of a
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 comment-ender), and the entry for @samp{/} is @samp{@w{. 14}} (i.e.,
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 punctuation, matching character slot unused, first character of a
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 comment-starter, second character of a comment-ender).
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 @menu
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 * Syntax Class Table:: Table of syntax classes.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 * Syntax Flags:: Additional flags each character can have.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 @end menu
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 @node Syntax Class Table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 @subsection Table of Syntax Classes
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
125 Here is a table of syntax classes, the characters that stand for them,
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 their meanings, and examples of their use.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 @deffn {Syntax class} @w{whitespace character}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
129 @dfn{Whitespace characters} (designated by @w{@samp{@ }} or @samp{-})
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 separate symbols and words from each other. Typically, whitespace
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 characters have no other syntactic significance, and multiple whitespace
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 characters are syntactically equivalent to a single one. Space, tab,
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
133 newline and formfeed are classified as whitespace in almost all major
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
134 modes.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 @deffn {Syntax class} @w{word constituent}
55738
69dcc9afcf6f (Syntax Class Table): Word syntax not just for English.
Richard M. Stallman <rms@gnu.org>
parents: 54114
diff changeset
138 @dfn{Word constituents} (designated by @samp{w}) are parts of words in
69dcc9afcf6f (Syntax Class Table): Word syntax not just for English.
Richard M. Stallman <rms@gnu.org>
parents: 54114
diff changeset
139 human languages, and are typically used in variable and command names
69dcc9afcf6f (Syntax Class Table): Word syntax not just for English.
Richard M. Stallman <rms@gnu.org>
parents: 54114
diff changeset
140 in programs. All upper- and lower-case letters, and the digits, are
69dcc9afcf6f (Syntax Class Table): Word syntax not just for English.
Richard M. Stallman <rms@gnu.org>
parents: 54114
diff changeset
141 typically word constituents.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 @deffn {Syntax class} @w{symbol constituent}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
145 @dfn{Symbol constituents} (designated by @samp{_}) are the extra
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 characters that are used in variable and command names along with word
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 constituents. For example, the symbol constituents class is used in
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 Lisp mode to indicate that certain characters may be part of symbol
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 names even though they are not part of English words. These characters
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 are @samp{$&*+-_<>}. In standard C, the only non-word-constituent
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 character that is valid in symbols is underscore (@samp{_}).
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 @deffn {Syntax class} @w{punctuation character}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
155 @dfn{Punctuation characters} (designated by @samp{.}) are those
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
156 characters that are used as punctuation in English, or are used in some
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
157 way in a programming language to separate symbols from one another.
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
158 Some programming language modes, such as Emacs Lisp mode, have no
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
159 characters in this class since the few characters that are not symbol or
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
160 word constituents all have other uses. Other programming language modes,
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
161 such as C mode, use punctuation syntax for operators.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 @deffn {Syntax class} @w{open parenthesis character}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 @deffnx {Syntax class} @w{close parenthesis character}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 @cindex parenthesis syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 Open and close @dfn{parenthesis characters} are characters used in
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 dissimilar pairs to surround sentences or expressions. Such a grouping
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 is begun with an open parenthesis character and terminated with a close.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 Each open parenthesis character matches a particular close parenthesis
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 character, and vice versa. Normally, Emacs indicates momentarily the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 matching open parenthesis when you insert a close parenthesis.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 @xref{Blinking}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
175 The class of open parentheses is designated by @samp{(}, and that of
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
176 close parentheses by @samp{)}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 In English text, and in C code, the parenthesis pairs are @samp{()},
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 @samp{[]}, and @samp{@{@}}. In Emacs Lisp, the delimiters for lists and
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 vectors (@samp{()} and @samp{[]}) are classified as parenthesis
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 characters.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 @deffn {Syntax class} @w{string quote}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
185 @dfn{String quote characters} (designated by @samp{"}) are used in
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 many languages, including Lisp and C, to delimit string constants. The
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 same string quote character appears at the beginning and the end of a
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 string. Such quoted strings do not nest.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 The parsing facilities of Emacs consider a string as a single token.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 The usual syntactic meanings of the characters in the string are
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 suppressed.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 The Lisp modes have two string quote characters: double-quote (@samp{"})
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 and vertical bar (@samp{|}). @samp{|} is not used in Emacs Lisp, but it
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 is used in Common Lisp. C also has two string quote characters:
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 double-quote for strings, and single-quote (@samp{'}) for character
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 constants.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 English text has no string quote characters because English is not a
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 programming language. Although quotation marks are used in English,
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 we do not want them to turn off the usual syntactic properties of
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 other characters in the quotation.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 @deffn {Syntax class} @w{escape}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
207 An @dfn{escape character} (designated by @samp{\}) starts an escape
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 sequence such as is used in C string and character constants. The
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 character @samp{\} belongs to this class in both C and Lisp. (In C, it
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 is used thus only inside strings, but it turns out to cause no trouble
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 to treat it this way throughout C code.)
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 Characters in this class count as part of words if
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 @code{words-include-escapes} is non-@code{nil}. @xref{Word Motion}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 @deffn {Syntax class} @w{character quote}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
218 A @dfn{character quote character} (designated by @samp{/}) quotes the
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 following character so that it loses its normal syntactic meaning. This
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 differs from an escape character in that only the character immediately
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 following is ever affected.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 Characters in this class count as part of words if
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 @code{words-include-escapes} is non-@code{nil}. @xref{Word Motion}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225
11136
043aedff8710 Fix usage note for character quote syntax class.
Richard M. Stallman <rms@gnu.org>
parents: 8469
diff changeset
226 This class is used for backslash in @TeX{} mode.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 @deffn {Syntax class} @w{paired delimiter}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
230 @dfn{Paired delimiter characters} (designated by @samp{$}) are like
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 string quote characters except that the syntactic properties of the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 characters between the delimiters are not suppressed. Only @TeX{} mode
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
233 uses a paired delimiter presently---the @samp{$} that both enters and
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
234 leaves math mode.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 @deffn {Syntax class} @w{expression prefix}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
238 An @dfn{expression prefix operator} (designated by @samp{'}) is used for
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
239 syntactic operators that are considered as part of an expression if they
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
240 appear next to one. In Lisp modes, these characters include the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
241 apostrophe, @samp{'} (used for quoting), the comma, @samp{,} (used in
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
242 macros), and @samp{#} (used in the read syntax for certain data types).
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 @deffn {Syntax class} @w{comment starter}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 @deffnx {Syntax class} @w{comment ender}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 @cindex comment syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 The @dfn{comment starter} and @dfn{comment ender} characters are used in
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 various languages to delimit comments. These classes are designated
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
250 by @samp{<} and @samp{>}, respectively.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 English text has no comment characters. In Lisp, the semicolon
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 (@samp{;}) starts a comment and a newline or formfeed ends one.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 @deffn {Syntax class} @w{inherit}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
257 This syntax class does not specify a particular syntax. It says to look
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
258 in the standard syntax table to find the syntax of this character. The
63291
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
259 designator for this syntax class is @samp{@@}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
262 @deffn {Syntax class} @w{generic comment delimiter}
37623
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
263 A @dfn{generic comment delimiter} (designated by @samp{!}) starts
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
264 or ends a special kind of comment. @emph{Any} generic comment delimiter
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
265 matches @emph{any} generic comment delimiter, but they cannot match
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
266 a comment starter or comment ender; generic comment delimiters can only
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
267 match each other.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
268
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
269 This syntax class is primarily meant for use with the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
270 @code{syntax-table} text property (@pxref{Syntax Properties}). You can
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
271 mark any range of characters as forming a comment, by giving the first
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
272 and last characters of the range @code{syntax-table} properties
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
273 identifying them as generic comment delimiters.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
274 @end deffn
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
275
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
276 @deffn {Syntax class} @w{generic string delimiter}
37623
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
277 A @dfn{generic string delimiter} (designated by @samp{|}) starts or ends
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
278 a string. This class differs from the string quote class in that @emph{any}
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
279 generic string delimiter can match any other generic string delimiter; but
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
280 they do not match ordinary string quote characters.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
281
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
282 This syntax class is primarily meant for use with the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
283 @code{syntax-table} text property (@pxref{Syntax Properties}). You can
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
284 mark any range of characters as forming a string constant, by giving the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
285 first and last characters of the range @code{syntax-table} properties
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
286 identifying them as generic string delimiters.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
287 @end deffn
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
288
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 @node Syntax Flags
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 @subsection Syntax Flags
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 @cindex syntax flags
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 In addition to the classes, entries for characters in a syntax table
26288
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
294 can specify flags. There are seven possible flags, represented by the
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
295 characters @samp{1}, @samp{2}, @samp{3}, @samp{4}, @samp{b}, @samp{n},
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
296 and @samp{p}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297
26288
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
298 All the flags except @samp{n} and @samp{p} are used to describe
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
299 multi-character comment delimiters. The digit flags indicate that a
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
300 character can @emph{also} be part of a comment sequence, in addition to
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
301 the syntactic properties associated with its character class. The flags
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
302 are independent of the class and each other for the sake of characters
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
303 such as @samp{*} in C mode, which is a punctuation character, @emph{and}
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
304 the second character of a start-of-comment sequence (@samp{/*}),
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
305 @emph{and} the first character of an end-of-comment sequence
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
306 (@samp{*/}).
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
308 Here is a table of the possible flags for a character @var{c},
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
309 and what they mean:
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 @itemize @bullet
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 @item
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
313 @samp{1} means @var{c} is the start of a two-character comment-start
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 sequence.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 @item
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 @samp{2} means @var{c} is the second character of such a sequence.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 @item
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
320 @samp{3} means @var{c} is the start of a two-character comment-end
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 sequence.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 @item
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 @samp{4} means @var{c} is the second character of such a sequence.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 @item
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 @c Emacs 19 feature
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 @samp{b} means that @var{c} as a comment delimiter belongs to the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 alternative ``b'' comment style.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 Emacs supports two comment styles simultaneously in any one syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 table. This is for the sake of C++. Each style of comment syntax has
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 its own comment-start sequence and its own comment-end sequence. Each
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 comment must stick to one style or the other; thus, if it starts with
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 the comment-start sequence of style ``b'', it must also end with the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 comment-end sequence of style ``b''.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 The two comment-start sequences must begin with the same character; only
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 the second character may differ. Mark the second character of the
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
340 ``b''-style comment-start sequence with the @samp{b} flag.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 A comment-end sequence (one or two characters) applies to the ``b''
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 style if its first character has the @samp{b} flag set; otherwise, it
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 applies to the ``a'' style.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 The appropriate comment syntax settings for C++ are as follows:
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 @table @asis
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 @item @samp{/}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 @samp{124b}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 @item @samp{*}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 @samp{23}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 @item newline
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 @samp{>b}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 @end table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
357 This defines four comment-delimiting sequences:
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
358
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
359 @table @asis
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
360 @item @samp{/*}
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
361 This is a comment-start sequence for ``a'' style because the
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
362 second character, @samp{*}, does not have the @samp{b} flag.
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
363
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
364 @item @samp{//}
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
365 This is a comment-start sequence for ``b'' style because the second
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
366 character, @samp{/}, does have the @samp{b} flag.
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
367
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
368 @item @samp{*/}
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
369 This is a comment-end sequence for ``a'' style because the first
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
370 character, @samp{*}, does not have the @samp{b} flag.
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
371
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
372 @item newline
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
373 This is a comment-end sequence for ``b'' style, because the newline
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
374 character has the @samp{b} flag.
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
375 @end table
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 @item
26288
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
378 @samp{n} on a comment delimiter character specifies
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
379 that this kind of comment can be nested. For a two-character
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
380 comment delimiter, @samp{n} on either character makes it
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
381 nestable.
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
382
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
383 @item
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 @c Emacs 19 feature
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 @samp{p} identifies an additional ``prefix character'' for Lisp syntax.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 These characters are treated as whitespace when they appear between
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 expressions. When they appear within an expression, they are handled
63291
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
388 according to their usual syntax classes.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 The function @code{backward-prefix-chars} moves back over these
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 characters, as well as over characters whose primary syntax class is
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 prefix (@samp{'}). @xref{Motion and Syntax}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 @end itemize
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 @node Syntax Table Functions
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 @section Syntax Table Functions
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 In this section we describe functions for creating, accessing and
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 altering syntax tables.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
401 @defun make-syntax-table &optional table
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
402 This function creates a new syntax table, with all values initialized
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
403 to @code{nil}. If @var{table} is non-@code{nil}, it becomes the
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
404 parent of the new syntax table, otherwise the standard syntax table is
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
405 the parent. Like all char-tables, a syntax table inherits from its
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
406 parent. Thus the original syntax of all characters in the returned
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
407 syntax table is determined by the parent. @xref{Char-Tables}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 Most major mode syntax tables are created in this way.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 @defun copy-syntax-table &optional table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 This function constructs a copy of @var{table} and returns it. If
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 @var{table} is not supplied (or is @code{nil}), it returns a copy of the
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
415 standard syntax table. Otherwise, an error is signaled if @var{table} is
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 not a syntax table.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 @deffn Command modify-syntax-entry char syntax-descriptor &optional table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 This function sets the syntax entry for @var{char} according to
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 @var{syntax-descriptor}. The syntax is changed only for @var{table},
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 which defaults to the current buffer's syntax table, and not in any
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 other syntax table. The argument @var{syntax-descriptor} specifies the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 desired syntax; this is a string beginning with a class designator
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 character, and optionally containing a matching character and flags as
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 well. @xref{Syntax Descriptors}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 This function always returns @code{nil}. The old syntax information in
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 the table for this character is discarded.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 An error is signaled if the first character of the syntax descriptor is not
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
432 one of the seventeen syntax class designator characters. An error is also
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 signaled if @var{char} is not a character.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 @example
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 @group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 @exdent @r{Examples:}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 ;; @r{Put the space character in class whitespace.}
51996
92cbf13e04cf (Syntax Table Functions): Use \s syntax in examples.
Richard M. Stallman <rms@gnu.org>
parents: 49600
diff changeset
440 (modify-syntax-entry ?\s " ")
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 @result{} nil
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 @end group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 @group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 ;; @r{Make @samp{$} an open parenthesis character,}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 ;; @r{with @samp{^} as its matching close.}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 (modify-syntax-entry ?$ "(^")
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 @result{} nil
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 @end group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 @group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 ;; @r{Make @samp{^} a close parenthesis character,}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 ;; @r{with @samp{$} as its matching open.}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 (modify-syntax-entry ?^ ")$")
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 @result{} nil
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 @end group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 @group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 ;; @r{Make @samp{/} a punctuation character,}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 ;; @r{the first character of a start-comment sequence,}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 ;; @r{and the second character of an end-comment sequence.}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 ;; @r{This is used in C mode.}
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
463 (modify-syntax-entry ?/ ". 14")
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 @result{} nil
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 @end group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 @end example
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 @end deffn
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 @defun char-syntax character
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 This function returns the syntax class of @var{character}, represented
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
471 by its mnemonic designator character. This returns @emph{only} the
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 class, not any matching parenthesis or flags.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 An error is signaled if @var{char} is not a character.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 The following examples apply to C mode. The first example shows that
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 the syntax class of space is whitespace (represented by a space). The
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 second example shows that the syntax of @samp{/} is punctuation. This
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
479 does not show the fact that it is also part of comment-start and -end
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
480 sequences. The third example shows that open parenthesis is in the class
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 of open parentheses. This does not show the fact that it has a matching
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 character, @samp{)}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 @example
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 @group
51996
92cbf13e04cf (Syntax Table Functions): Use \s syntax in examples.
Richard M. Stallman <rms@gnu.org>
parents: 49600
diff changeset
486 (string (char-syntax ?\s))
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 @result{} " "
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 @end group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 @group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
491 (string (char-syntax ?/))
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 @result{} "."
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 @end group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 @group
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
496 (string (char-syntax ?\())
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 @result{} "("
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 @end group
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 @end example
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
500
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
501 We use @code{string} to make it easier to see the character returned by
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
502 @code{char-syntax}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 @defun set-syntax-table table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 This function makes @var{table} the syntax table for the current buffer.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 It returns @var{table}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 @defun syntax-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 This function returns the current syntax table, which is the table for
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 the current buffer.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514
66148
1accb97f86b9 (Syntax Table Functions):
Juri Linkov <juri@jurta.org>
parents: 64889
diff changeset
515 @defmac with-syntax-table @var{table} @var{body}@dots{}
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
516 @tindex with-syntax-table
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
517 This macro executes @var{body} using @var{table} as the current syntax
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
518 table. It returns the value of the last form in @var{body}, after
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
519 restoring the old current syntax table.
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
520
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
521 Since each buffer has its own current syntax table, we should make that
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
522 more precise: @code{with-syntax-table} temporarily alters the current
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
523 syntax table of whichever buffer is current at the time the macro
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
524 execution starts. Other buffers are not affected.
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
525 @end defmac
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
526
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
527 @node Syntax Properties
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
528 @section Syntax Properties
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
529 @kindex syntax-table @r{(text property)}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
530
61907
eea6ec994be4 (Syntax Properties): Add cross reference.
Lute Kamstra <lute@gnu.org>
parents: 61801
diff changeset
531 When the syntax table is not flexible enough to specify the syntax of
eea6ec994be4 (Syntax Properties): Add cross reference.
Lute Kamstra <lute@gnu.org>
parents: 61801
diff changeset
532 a language, you can use @code{syntax-table} text properties to
eea6ec994be4 (Syntax Properties): Add cross reference.
Lute Kamstra <lute@gnu.org>
parents: 61801
diff changeset
533 override the syntax table for specific character occurrences in the
eea6ec994be4 (Syntax Properties): Add cross reference.
Lute Kamstra <lute@gnu.org>
parents: 61801
diff changeset
534 buffer. @xref{Text Properties}. You can use Font Lock mode to set
eea6ec994be4 (Syntax Properties): Add cross reference.
Lute Kamstra <lute@gnu.org>
parents: 61801
diff changeset
535 @code{syntax-table} text properties. @xref{Setting Syntax
eea6ec994be4 (Syntax Properties): Add cross reference.
Lute Kamstra <lute@gnu.org>
parents: 61801
diff changeset
536 Properties}.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
537
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
538 The valid values of @code{syntax-table} text property are:
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
539
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
540 @table @asis
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
541 @item @var{syntax-table}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
542 If the property value is a syntax table, that table is used instead of
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
543 the current buffer's syntax table to determine the syntax for this
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
544 occurrence of the character.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
545
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
546 @item @code{(@var{syntax-code} . @var{matching-char})}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
547 A cons cell of this format specifies the syntax for this
37623
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
548 occurrence of the character. (@pxref{Syntax Table Internals})
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
549
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
550 @item @code{nil}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
551 If the property is @code{nil}, the character's syntax is determined from
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
552 the current syntax table in the usual way.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
553 @end table
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
554
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
555 @defvar parse-sexp-lookup-properties
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
556 If this is non-@code{nil}, the syntax scanning functions pay attention
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
557 to syntax text properties. Otherwise they use only the current syntax
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
558 table.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
559 @end defvar
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
560
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 @node Motion and Syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 @section Motion and Syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
564 This section describes functions for moving across characters that
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
565 have certain syntax classes.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 @defun skip-syntax-forward syntaxes &optional limit
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
568 This function moves point forward across characters having syntax
63291
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
569 classes mentioned in @var{syntaxes} (a string of syntax class
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
570 characters). It stops when it encounters the end of the buffer, or
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
571 position @var{limit} (if specified), or a character it is not supposed
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
572 to skip.
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
573
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
574 If @var{syntaxes} starts with @samp{^}, then the function skips
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
575 characters whose syntax is @emph{not} in @var{syntaxes}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
576
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 The return value is the distance traveled, which is a nonnegative
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 integer.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 @defun skip-syntax-backward syntaxes &optional limit
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 This function moves point backward across characters whose syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 classes are mentioned in @var{syntaxes}. It stops when it encounters
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
584 the beginning of the buffer, or position @var{limit} (if specified), or
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
585 a character it is not supposed to skip.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
586
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
587 If @var{syntaxes} starts with @samp{^}, then the function skips
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
588 characters whose syntax is @emph{not} in @var{syntaxes}.
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
589
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 The return value indicates the distance traveled. It is an integer that
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 is zero or less.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 @defun backward-prefix-chars
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 This function moves point backward over any number of characters with
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 expression prefix syntax. This includes both characters in the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 expression prefix syntax class, and characters with the @samp{p} flag.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 @node Parsing Expressions
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 @section Parsing Balanced Expressions
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 Here are several functions for parsing and scanning balanced
45944
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
604 expressions, also known as @dfn{sexps}. Basically, a sexp is either a
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
605 balanced parenthetical grouping, or a symbol name (a sequence of
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
606 characters whose syntax is either word constituent or symbol
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
607 constituent). However, characters whose syntax is expression prefix
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
608 are treated as part of the sexp if they appear next to it.
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
609
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
610 The syntax table controls the interpretation of characters, so these
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
611 functions can be used for Lisp expressions when in Lisp mode and for C
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
612 expressions when in C mode. @xref{List Motion}, for convenient
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 higher-level functions for moving over balanced expressions.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614
45944
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
615 A syntax table only describes how each character changes the state
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
616 of the parser, rather than describing the state itself. For example,
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
617 a string delimiter character toggles the parser state between
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
618 ``in-string'' and ``in-code'' but the characters inside the string do
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
619 not have any particular syntax to identify them as such. For example
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
620 (note that 15 is the syntax code for generic string delimiters),
39791
b433b5996ddb Try to explain syntax-tables a little bit more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37647
diff changeset
621
b433b5996ddb Try to explain syntax-tables a little bit more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37647
diff changeset
622 @example
b433b5996ddb Try to explain syntax-tables a little bit more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37647
diff changeset
623 (put-text-property 1 9 'syntax-table '(15 . nil))
b433b5996ddb Try to explain syntax-tables a little bit more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37647
diff changeset
624 @end example
b433b5996ddb Try to explain syntax-tables a little bit more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37647
diff changeset
625
45944
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
626 @noindent
39791
b433b5996ddb Try to explain syntax-tables a little bit more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37647
diff changeset
627 does not tell Emacs that the first eight chars of the current buffer
45944
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
628 are a string, but rather that they are all string delimiters. As a
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
629 result, Emacs treats them as four consecutive empty string constants.
39791
b433b5996ddb Try to explain syntax-tables a little bit more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37647
diff changeset
630
45944
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
631 Every time you use the parser, you specify it a starting state as
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
632 well as a starting position. If you omit the starting state, the
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
633 default is ``top level in parenthesis structure,'' as it would be at
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
634 the beginning of a function definition. (This is the case for
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
635 @code{forward-sexp}, which blindly assumes that the starting point is
ca4e3a6d73f4 (Parsing Expressions): Give definition of sexp in terms of syntax classes.
Richard M. Stallman <rms@gnu.org>
parents: 42302
diff changeset
636 in such a state.)
39791
b433b5996ddb Try to explain syntax-tables a little bit more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37647
diff changeset
637
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 @defun parse-partial-sexp start limit &optional target-depth stop-before state stop-comment
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 This function parses a sexp in the current buffer starting at
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
640 @var{start}, not scanning past @var{limit}. It stops at position
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
641 @var{limit} or when certain criteria described below are met, and sets
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
642 point to the location where parsing stops. It returns a value
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
643 describing the status of the parse at the point where it stops.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 If @var{state} is @code{nil}, @var{start} is assumed to be at the top
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 level of parenthesis structure, such as the beginning of a function
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 definition. Alternatively, you might wish to resume parsing in the
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 middle of the structure. To do this, you must provide a @var{state}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 argument that describes the initial status of parsing.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 @cindex parenthesis depth
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 If the third argument @var{target-depth} is non-@code{nil}, parsing
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 stops if the depth in parentheses becomes equal to @var{target-depth}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 The depth starts at 0, or at whatever is given in @var{state}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 If the fourth argument @var{stop-before} is non-@code{nil}, parsing
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 stops when it comes to any character that starts a sexp. If
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 @var{stop-comment} is non-@code{nil}, parsing stops when it comes to the
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
659 start of a comment. If @var{stop-comment} is the symbol
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
660 @code{syntax-table}, parsing stops after the start of a comment or a
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
661 string, or the end of a comment or a string, whichever comes first.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 @cindex parse state
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
664 The fifth argument @var{state} is a ten-element list of the same form
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
665 as the value of this function, described below. (It is OK to omit the
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
666 last two elements of this list.) The return value of one call may be
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
667 used to initialize the state of the parse on another call to
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
668 @code{parse-partial-sexp}.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
670 The result is a list of ten elements describing the final state of
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 the parse:
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 @enumerate 0
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45944
diff changeset
674 @item
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 The depth in parentheses, counting from 0.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45944
diff changeset
677 @item
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 @cindex innermost containing parentheses
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
679 The character position of the start of the innermost parenthetical
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
680 grouping containing the stopping point; @code{nil} if none.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45944
diff changeset
682 @item
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 @cindex previous complete subexpression
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 The character position of the start of the last complete subexpression
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 terminated; @code{nil} if none.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45944
diff changeset
687 @item
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 @cindex inside string
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 Non-@code{nil} if inside a string. More precisely, this is the
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
690 character that will terminate the string, or @code{t} if a generic
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
691 string delimiter character should terminate it.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45944
diff changeset
693 @item
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 @cindex inside comment
26288
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
695 @code{t} if inside a comment (of either style),
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
696 or the comment nesting level if inside a kind of comment
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
697 that can be nested.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45944
diff changeset
699 @item
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 @cindex quote character
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 @code{t} if point is just after a quote character.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45944
diff changeset
703 @item
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 The minimum parenthesis depth encountered during this scan.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 @item
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
707 What kind of comment is active: @code{nil} for a comment of style
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
708 ``a'' or when not inside a comment, @code{t} for a comment of style
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
709 ``b'', and @code{syntax-table} for a comment that should be ended by a
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
710 generic comment delimiter character.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
711
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
712 @item
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
713 The string or comment start position. While inside a comment, this is
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
714 the position where the comment began; while inside a string, this is the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
715 position where the string began. When outside of strings and comments,
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
716 this element is @code{nil}.
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
717
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
718 @item
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
719 Internal data for continuing the parsing. The meaning of this
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
720 data is subject to change; it is used if you pass this list
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
721 as the @var{state} argument to another call.
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
722
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 @end enumerate
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
725 Elements 0, 3, 4, 5, 7 and 9 are significant in the argument
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
726 @var{state}.
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
727
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 @cindex indenting with parentheses
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 This function is most often used to compute indentation for languages
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 that have nested parentheses.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732
63291
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
733 @defun syntax-ppss &optional pos
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
734 This function returns the state that the parser would have at position
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
735 @var{pos}, if it were started with a default start state at the
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
736 beginning of the buffer. Thus, it is equivalent to
63295
8d95ae44a1a4 (Parsing Expressions): Fix Texinfo error.
Luc Teirlinck <teirllm@auburn.edu>
parents: 63291
diff changeset
737 @code{(parse-partial-sexp (point-min) @var{pos})}, except that
63291
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
738 @code{syntax-ppss} uses a cache to speed up the computation. Also,
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
739 the 2nd value (previous complete subexpression) and 6th value (minimum
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
740 parenthesis depth) of the returned state are not meaningful.
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
741 @end defun
e7539bdc68d1 (Parsing Expressions): Document syntax-ppss.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 61907
diff changeset
742
63378
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
743 @defun syntax-ppss-flush-cache beg
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
744 This function flushes the cache used by @code{syntax-ppss}, starting at
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
745 position @var{beg}.
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
746
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
747 When @code{syntax-ppss} is called, it automatically hooks itself
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
748 to @code{before-change-functions} to keep its cache consistent.
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
749 But this can fail if @code{syntax-ppss} is called while
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
750 @code{before-change-functions} is temporarily let-bound, or if the
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
751 buffer is modified without obeying the hook, such as when using
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
752 @code{inhibit-modification-hooks}. For this reason, it is sometimes
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
753 necessary to flush the cache manually.
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
754 @end defun
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
755
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
756 @defvar syntax-begin-function
63543
7bc82f443768 (Parsing Expressions): Fix texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 63378
diff changeset
757 If this is non-@code{nil}, it should be a function that moves to an
7bc82f443768 (Parsing Expressions): Fix texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 63378
diff changeset
758 earlier buffer position where the parser state is equivalent to
7bc82f443768 (Parsing Expressions): Fix texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 63378
diff changeset
759 @code{nil}---in other words, a position outside of any comment,
7bc82f443768 (Parsing Expressions): Fix texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 63378
diff changeset
760 string, or parenthesis. @code{syntax-ppss} uses it to supplement its
7bc82f443768 (Parsing Expressions): Fix texinfo usage.
Richard M. Stallman <rms@gnu.org>
parents: 63378
diff changeset
761 cache.
63378
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
762 @end defvar
32d8df63f9df (Parsing Expressions): Document aux functions and vars of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 63295
diff changeset
763
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 @defun scan-lists from count depth
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 This function scans forward @var{count} balanced parenthetical groupings
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
766 from position @var{from}. It returns the position where the scan stops.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
767 If @var{count} is negative, the scan moves backwards.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 If @var{depth} is nonzero, parenthesis depth counting begins from that
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 value. The only candidates for stopping are places where the depth in
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 parentheses becomes zero; @code{scan-lists} counts @var{count} such
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 places and then stops. Thus, a positive value for @var{depth} means go
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
773 out @var{depth} levels of parenthesis.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 Scanning ignores comments if @code{parse-sexp-ignore-comments} is
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 non-@code{nil}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
778 If the scan reaches the beginning or end of the buffer (or its
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
779 accessible portion), and the depth is not zero, an error is signaled.
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
780 If the depth is zero but the count is not used up, @code{nil} is
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
781 returned.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 @defun scan-sexps from count
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
785 This function scans forward @var{count} sexps from position @var{from}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
786 It returns the position where the scan stops. If @var{count} is
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
787 negative, the scan moves backwards.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 Scanning ignores comments if @code{parse-sexp-ignore-comments} is
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 non-@code{nil}.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
792 If the scan reaches the beginning or end of (the accessible part of) the
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
793 buffer while in the middle of a parenthetical grouping, an error is
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
794 signaled. If it reaches the beginning or end between groupings but
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
795 before count is used up, @code{nil} is returned.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797
27839
7e7d80573325 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
798 @defvar multibyte-syntax-as-symbol
7e7d80573325 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
799 @tindex multibyte-syntax-as-symbol
7e7d80573325 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
800 If this variable is non-@code{nil}, @code{scan-sexps} treats all
52978
1a5c50faf357 Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents: 52844
diff changeset
801 non-@acronym{ASCII} characters as symbol constituents regardless
27839
7e7d80573325 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
802 of what the syntax table says about them. (However, text properties
7e7d80573325 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
803 can still override the syntax.)
7e7d80573325 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
804 @end defvar
7e7d80573325 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 27193
diff changeset
805
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
806 @defopt parse-sexp-ignore-comments
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 @cindex skipping comments
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 If the value is non-@code{nil}, then comments are treated as
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 whitespace by the functions in this section and by @code{forward-sexp}.
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
810 @end defopt
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811
52786
69d6dc55b638 (Parsing Expressions): Mention parse-sexp-lookup-properties here.
Dave Love <fx@gnu.org>
parents: 52401
diff changeset
812 @vindex parse-sexp-lookup-properties
63295
8d95ae44a1a4 (Parsing Expressions): Fix Texinfo error.
Luc Teirlinck <teirllm@auburn.edu>
parents: 63291
diff changeset
813 The behavior of @code{parse-partial-sexp} is also affected by
52844
d16eccf42b43 (Parsing Expressions): Clean up forward-comment
Richard M. Stallman <rms@gnu.org>
parents: 52786
diff changeset
814 @code{parse-sexp-lookup-properties} (@pxref{Syntax Properties}).
52786
69d6dc55b638 (Parsing Expressions): Mention parse-sexp-lookup-properties here.
Dave Love <fx@gnu.org>
parents: 52401
diff changeset
815
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 You can use @code{forward-comment} to move forward or backward over
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 one comment or several comments.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 @defun forward-comment count
41478
026c44f15054 Clarify behavior of forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 39791
diff changeset
820 This function moves point forward across @var{count} complete comments
026c44f15054 Clarify behavior of forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 39791
diff changeset
821 (that is, including the starting delimiter and the terminating
41653
539c02b5cd0c Another change in forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 41478
diff changeset
822 delimiter if any), plus any whitespace encountered on the way. It
539c02b5cd0c Another change in forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 41478
diff changeset
823 moves backward if @var{count} is negative. If it encounters anything
539c02b5cd0c Another change in forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 41478
diff changeset
824 other than a comment or whitespace, it stops, leaving point at the
539c02b5cd0c Another change in forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 41478
diff changeset
825 place where it stopped. This includes (for instance) finding the end
539c02b5cd0c Another change in forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 41478
diff changeset
826 of a comment when moving forward and expecting the beginning of one.
539c02b5cd0c Another change in forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 41478
diff changeset
827 The function also stops immediately after moving over the specified
52786
69d6dc55b638 (Parsing Expressions): Mention parse-sexp-lookup-properties here.
Dave Love <fx@gnu.org>
parents: 52401
diff changeset
828 number of complete comments. If @var{count} comments are found as
52844
d16eccf42b43 (Parsing Expressions): Clean up forward-comment
Richard M. Stallman <rms@gnu.org>
parents: 52786
diff changeset
829 expected, with nothing except whitespace between them, it returns
d16eccf42b43 (Parsing Expressions): Clean up forward-comment
Richard M. Stallman <rms@gnu.org>
parents: 52786
diff changeset
830 @code{t}; otherwise it returns @code{nil}.
41478
026c44f15054 Clarify behavior of forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 39791
diff changeset
831
026c44f15054 Clarify behavior of forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 39791
diff changeset
832 This function cannot tell whether the ``comments'' it traverses are
026c44f15054 Clarify behavior of forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 39791
diff changeset
833 embedded within a string. If they look like comments, it treats them
026c44f15054 Clarify behavior of forward-comment.
Richard M. Stallman <rms@gnu.org>
parents: 39791
diff changeset
834 as comments.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 To move forward over all comments and whitespace following point, use
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 @code{(forward-comment (buffer-size))}. @code{(buffer-size)} is a good
8469
9e44c96dd99d entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6552
diff changeset
839 argument to use, because the number of comments in the buffer cannot
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 exceed that many.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 @node Standard Syntax Tables
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 @section Some Standard Syntax Tables
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 11136
diff changeset
845 Most of the major modes in Emacs have their own syntax tables. Here
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 11136
diff changeset
846 are several of them:
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 @defun standard-syntax-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 This function returns the standard syntax table, which is the syntax
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 table used in Fundamental mode.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 @end defun
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 @defvar text-mode-syntax-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 The value of this variable is the syntax table used in Text mode.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 @defvar c-mode-syntax-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 The value of this variable is the syntax table for C-mode buffers.
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 @defvar emacs-lisp-mode-syntax-table
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 The value of this variable is the syntax table used in Emacs Lisp mode
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 by editing commands. (It has no effect on the Lisp @code{read}
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 function.)
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 @end defvar
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 @node Syntax Table Internals
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 @section Syntax Table Internals
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 @cindex syntax table internals
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
871 Lisp programs don't usually work with the elements directly; the
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 Lisp-level syntax table functions usually work with syntax descriptors
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
873 (@pxref{Syntax Descriptors}). Nonetheless, here we document the
37623
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
874 internal format. This format is used mostly when manipulating
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
875 syntax properties.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
877 Each element of a syntax table is a cons cell of the form
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
878 @code{(@var{syntax-code} . @var{matching-char})}. The @sc{car},
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
879 @var{syntax-code}, is an integer that encodes the syntax class, and any
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
880 flags. The @sc{cdr}, @var{matching-char}, is non-@code{nil} if
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
881 a character to match was specified.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
882
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
883 This table gives the value of @var{syntax-code} which corresponds
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
884 to each syntactic type.
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885
63601
a343c1886b26 widen multitable column to avoid underfull box
Karl Berry <karl@gnu.org>
parents: 63543
diff changeset
886 @multitable @columnfractions .05 .3 .3 .31
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
887 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
888 @tab
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
889 @i{Integer} @i{Class}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
890 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
891 @i{Integer} @i{Class}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
892 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
893 @i{Integer} @i{Class}
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
894 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
895 @tab
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
896 0 @ @ whitespace
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
897 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
898 5 @ @ close parenthesis
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
899 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
900 10 @ @ character quote
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
901 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
902 @tab
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
903 1 @ @ punctuation
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
904 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
905 6 @ @ expression prefix
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
906 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
907 11 @ @ comment-start
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
908 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
909 @tab
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
910 2 @ @ word
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
911 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
912 7 @ @ string quote
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
913 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
914 12 @ @ comment-end
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
915 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
916 @tab
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
917 3 @ @ symbol
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
918 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
919 8 @ @ paired delimiter
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
920 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
921 13 @ @ inherit
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
922 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
923 @tab
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
924 4 @ @ open parenthesis
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
925 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
926 9 @ @ escape
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
927 @tab
42302
d8ad3f9bd404 Replace "comment-fence" and "string-fence" with consistent terms.
Richard M. Stallman <rms@gnu.org>
parents: 41653
diff changeset
928 14 @ @ generic comment
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
929 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
930 @tab
42302
d8ad3f9bd404 Replace "comment-fence" and "string-fence" with consistent terms.
Richard M. Stallman <rms@gnu.org>
parents: 41653
diff changeset
931 15 @ generic string
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
932 @end multitable
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
933
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
934 For example, the usual syntax value for @samp{(} is @code{(4 . 41)}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
935 (41 is the character code for @samp{)}.)
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
936
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
937 The flags are encoded in higher order bits, starting 16 bits from the
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
938 least significant bit. This table gives the power of two which
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
939 corresponds to each syntax flag.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
940
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
941 @multitable @columnfractions .05 .3 .3 .3
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
942 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
943 @tab
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
944 @i{Prefix} @i{Flag}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
945 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
946 @i{Prefix} @i{Flag}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
947 @tab
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
948 @i{Prefix} @i{Flag}
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
949 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
950 @tab
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
951 @samp{1} @ @ @code{(lsh 1 16)}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
952 @tab
26288
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
953 @samp{4} @ @ @code{(lsh 1 19)}
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
954 @tab
26288
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
955 @samp{b} @ @ @code{(lsh 1 21)}
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
956 @item
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
957 @tab
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
958 @samp{2} @ @ @code{(lsh 1 17)}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
959 @tab
26288
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
960 @samp{p} @ @ @code{(lsh 1 20)}
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
961 @tab
26288
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
962 @samp{n} @ @ @code{(lsh 1 22)}
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
963 @item
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
964 @tab
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
965 @samp{3} @ @ @code{(lsh 1 18)}
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
966 @end multitable
6552
3b84ed22f747 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967
37623
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
968 @defun string-to-syntax @var{desc}
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
969 This function returns the internal form @code{(@var{syntax-code} .
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
970 @var{matching-char})} corresponding to the syntax descriptor @var{desc}.
37647
c78aca9e4eb2 (string-to-syntax): Close the @defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37623
diff changeset
971 @end defun
37623
a973c7d4c68e (Syntax Class Table): Add the missing designator for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35795
diff changeset
972
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
973 @defun syntax-after pos
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
974 This function returns the syntax code of the character in the buffer
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
975 after position @var{pos}, taking account of syntax properties as well
61801
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
976 as the syntax table. If @var{pos} is outside the buffer's accessible
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
977 portion (@pxref{Narrowing, accessible portion}), this function returns
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
978 @code{nil}.
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
979 @end defun
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
980
61704
0733fc416737 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60272
diff changeset
981 @defun syntax-class syntax
61801
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
982 This function returns the syntax class of the syntax code
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
983 @var{syntax}. (It masks off the high 16 bits that hold the flags
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
984 encoded in the syntax descriptor.) If @var{syntax} is @code{nil}, it
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
985 returns @code{nil}; this is so evaluating the expression
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
986
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
987 @example
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
988 (syntax-class (syntax-after pos))
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
989 @end example
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
990
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
991 @noindent
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
992 where @code{pos} is outside the buffer's accessible portion, will
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
993 yield @code{nil} without throwing errors or producing wrong syntax
063380bc7803 (Syntax Table Internals): Elaborate documentation of
Eli Zaretskii <eliz@gnu.org>
parents: 61704
diff changeset
994 class codes.
61704
0733fc416737 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60272
diff changeset
995 @end defun
0733fc416737 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60272
diff changeset
996
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
997 @node Categories
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
998 @section Categories
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
999 @cindex categories of characters
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1000
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1001 @dfn{Categories} provide an alternate way of classifying characters
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1002 syntactically. You can define several categories as needed, then
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1003 independently assign each character to one or more categories. Unlike
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1004 syntax classes, categories are not mutually exclusive; it is normal for
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1005 one character to belong to several categories.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1006
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1007 Each buffer has a @dfn{category table} which records which categories
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1008 are defined and also which characters belong to each category. Each
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1009 category table defines its own categories, but normally these are
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1010 initialized by copying from the standard categories table, so that the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1011 standard categories are available in all modes.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1012
52978
1a5c50faf357 Replace @sc{foo} with @acronym{FOO}.
Eli Zaretskii <eliz@gnu.org>
parents: 52844
diff changeset
1013 Each category has a name, which is an @acronym{ASCII} printing character in
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1014 the range @w{@samp{ }} to @samp{~}. You specify the name of a category
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1015 when you define it with @code{define-category}.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1016
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1017 The category table is actually a char-table (@pxref{Char-Tables}).
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1018 The element of the category table at index @var{c} is a @dfn{category
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1019 set}---a bool-vector---that indicates which categories character @var{c}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1020 belongs to. In this category set, if the element at index @var{cat} is
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1021 @code{t}, that means category @var{cat} is a member of the set, and that
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1022 character @var{c} belongs to category @var{cat}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1023
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1024 For the next three functions, the optional argument @var{table}
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1025 defaults to the current buffer's category table.
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1026
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1027 @defun define-category char docstring &optional table
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1028 This function defines a new category, with name @var{char} and
60272
881cc84dd099 (Syntax Class Table): Clarify.
Richard M. Stallman <rms@gnu.org>
parents: 58422
diff changeset
1029 documentation @var{docstring}, for the category table @var{table}.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1030 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1031
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1032 @defun category-docstring category &optional table
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1033 This function returns the documentation string of category @var{category}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1034 in category table @var{table}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1035
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1036 @example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1037 (category-docstring ?a)
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1038 @result{} "ASCII"
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1039 (category-docstring ?l)
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1040 @result{} "Latin"
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1041 @end example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1042 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1043
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1044 @defun get-unused-category &optional table
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1045 This function returns a category name (a character) which is not
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
1046 currently defined in @var{table}. If all possible categories are in use
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
1047 in @var{table}, it returns @code{nil}.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1048 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1049
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1050 @defun category-table
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1051 This function returns the current buffer's category table.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1052 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1053
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1054 @defun category-table-p object
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1055 This function returns @code{t} if @var{object} is a category table,
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1056 otherwise @code{nil}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1057 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1058
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1059 @defun standard-category-table
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1060 This function returns the standard category table.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1061 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1062
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1063 @defun copy-category-table &optional table
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1064 This function constructs a copy of @var{table} and returns it. If
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1065 @var{table} is not supplied (or is @code{nil}), it returns a copy of the
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1066 standard category table. Otherwise, an error is signaled if @var{table}
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1067 is not a category table.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1068 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1069
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1070 @defun set-category-table table
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1071 This function makes @var{table} the category table for the current
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1072 buffer. It returns @var{table}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1073 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1074
26722
10e4f3f125da Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26696
diff changeset
1075 @defun make-category-table
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
1076 @tindex make-category-table
26722
10e4f3f125da Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26696
diff changeset
1077 This creates and returns an empty category table. In an empty category
10e4f3f125da Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26696
diff changeset
1078 table, no categories have been allocated, and no characters belong to
10e4f3f125da Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 26696
diff changeset
1079 any categories.
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
1080 @end defun
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
1081
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1082 @defun make-category-set categories
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1083 This function returns a new category set---a bool-vector---whose initial
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1084 contents are the categories listed in the string @var{categories}. The
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1085 elements of @var{categories} should be category names; the new category
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1086 set has @code{t} for each of those categories, and @code{nil} for all
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1087 other categories.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1088
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1089 @example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1090 (make-category-set "al")
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1091 @result{} #&128"\0\0\0\0\0\0\0\0\0\0\0\0\2\20\0\0"
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1092 @end example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1093 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1094
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1095 @defun char-category-set char
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1096 This function returns the category set for character @var{char} in the
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1097 current buffer's category table. This is the bool-vector which
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1098 records which categories the character @var{char} belongs to. The
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1099 function @code{char-category-set} does not allocate storage, because
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1100 it returns the same bool-vector that exists in the category table.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1101
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1102 @example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1103 (char-category-set ?a)
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1104 @result{} #&128"\0\0\0\0\0\0\0\0\0\0\0\0\2\20\0\0"
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1105 @end example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1106 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1107
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1108 @defun category-set-mnemonics category-set
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1109 This function converts the category set @var{category-set} into a string
26696
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
1110 containing the characters that designate the categories that are members
ef5e7bbe6f19 Current version from /gd/gnu/elisp.
Dave Love <fx@gnu.org>
parents: 26288
diff changeset
1111 of the set.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1112
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1113 @example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1114 (category-set-mnemonics (char-category-set ?a))
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1115 @result{} "al"
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1116 @end example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1117 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1118
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1119 @defun modify-category-entry character category &optional table reset
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1120 This function modifies the category set of @var{character} in category
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1121 table @var{table} (which defaults to the current buffer's category
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1122 table).
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1123
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1124 Normally, it modifies the category set by adding @var{category} to it.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1125 But if @var{reset} is non-@code{nil}, then it deletes @var{category}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1126 instead.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
1127 @end defun
35795
30079c668d33 describe-categories
Dave Love <fx@gnu.org>
parents: 29049
diff changeset
1128
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1129 @deffn Command describe-categories &optional buffer-or-name
35795
30079c668d33 describe-categories
Dave Love <fx@gnu.org>
parents: 29049
diff changeset
1130 This function describes the category specifications in the current
54114
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1131 category table. It inserts the descriptions in a buffer, and then
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1132 displays that buffer. If @var{buffer-or-name} is non-@code{nil}, it
f309c4cf39a2 (Syntax Table Functions): Clarify and correct descriptions of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54040
diff changeset
1133 describes the category table of that buffer instead.
35795
30079c668d33 describe-categories
Dave Love <fx@gnu.org>
parents: 29049
diff changeset
1134 @end deffn
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51996
diff changeset
1135
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51996
diff changeset
1136 @ignore
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51996
diff changeset
1137 arch-tag: 4d914e96-0283-445c-9233-75d33662908c
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51996
diff changeset
1138 @end ignore