annotate src/syntax.c @ 72863:526dc1f36b09

(produce_image_glyph): Automatically crop wide images at right window edge so we can draw the cursor on the same row to avoid confusing redisplay by placing the cursor outside the visible window area.
author Kim F. Storm <storm@cua.dk>
date Thu, 14 Sep 2006 09:37:44 +0000
parents 8d894204c732
children d4ecc69b8d2e 8a8e69664178
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 /* GNU Emacs routines to deal with syntax tables; also word and list parsing.
64770
a0d1312ede66 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64319
diff changeset
2 Copyright (C) 1985, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2002,
68651
3bd95f4f2941 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 66525
diff changeset
3 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 This file is part of GNU Emacs.
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 GNU Emacs is free software; you can redistribute it and/or modify
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
726
5f08efa38dd0 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
9 the Free Software Foundation; either version 2, or (at your option)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 any later version.
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 GNU General Public License for more details.
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 along with GNU Emacs; see the file COPYING. If not, write to
64084
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63703
diff changeset
19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63703
diff changeset
20 Boston, MA 02110-1301, USA. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4458
diff changeset
23 #include <config.h>
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 #include <ctype.h>
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 #include "lisp.h"
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 #include "commands.h"
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 #include "buffer.h"
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
28 #include "charset.h"
39748
42b7a798ff79 Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39195
diff changeset
29 #include "keymap.h"
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
30 #include "regex.h"
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
31
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
32 /* Make syntax table lookup grant data in gl_state. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
33 #define SYNTAX_ENTRY_VIA_PROPERTY
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
34
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 #include "syntax.h"
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
36 #include "intervals.h"
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
37
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
38 /* We use these constants in place for comment-style and
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
39 string-ender-char to distinguish comments/strings started by
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
40 comment_fence and string_fence codes. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
41
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
42 #define ST_COMMENT_STYLE (256 + 1)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
43 #define ST_STRING_STYLE (256 + 2)
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
44 #include "category.h"
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45
16992
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
46 Lisp_Object Qsyntax_table_p, Qsyntax_table, Qscan_error;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 int words_include_escapes;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
49 int parse_sexp_lookup_properties;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
51 /* Nonzero means `scan-sexps' treat all multibyte characters as symbol. */
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
52 int multibyte_syntax_as_symbol;
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
53
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
54 /* Used as a temporary in SYNTAX_ENTRY and other macros in syntax.h,
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
55 if not compiled with GCC. No need to mark it, since it is used
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
56 only very temporarily. */
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
57 Lisp_Object syntax_temp;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
58
28302
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
59 /* Non-zero means an open parenthesis in column 0 is always considered
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
60 to be the start of a defun. Zero means an open parenthesis in
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
61 column 0 has no special meaning. */
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
62
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
63 int open_paren_in_column_0_is_defun_start;
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
64
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
65 /* This is the internal form of the parse state used in parse-partial-sexp. */
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
66
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
67 struct lisp_parse_state
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
68 {
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
69 int depth; /* Depth at end of parsing. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
70 int instring; /* -1 if not within string, else desired terminator. */
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
71 int incomment; /* -1 if in unnestable comment else comment nesting */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
72 int comstyle; /* comment style a=0, or b=1, or ST_COMMENT_STYLE. */
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
73 int quoted; /* Nonzero if just after an escape char at end of parsing */
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
74 int thislevelstart; /* Char number of most recent start-of-expression at current level */
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
75 int prevlevelstart; /* Char number of start of containing expression */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
76 int location; /* Char number at which parsing stopped. */
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
77 int mindepth; /* Minimum depth seen while scanning. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
78 int comstr_start; /* Position just after last comment/string starter. */
22394
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
79 Lisp_Object levelstarts; /* Char numbers of starts-of-expression
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
80 of levels (starting from outermost). */
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
81 };
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
82
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
83 /* These variables are a cache for finding the start of a defun.
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
84 find_start_pos is the place for which the defun start was found.
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
85 find_start_value is the defun start position found for it.
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
86 find_start_value_byte is the corresponding byte position.
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
87 find_start_buffer is the buffer it was found in.
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
88 find_start_begv is the BEGV value when it was found.
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
89 find_start_modiff is the value of MODIFF when it was found. */
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
90
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
91 static int find_start_pos;
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
92 static int find_start_value;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
93 static int find_start_value_byte;
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
94 static struct buffer *find_start_buffer;
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
95 static int find_start_begv;
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
96 static int find_start_modiff;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
97
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
98
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
99 static int find_defun_start P_ ((int, int));
71740
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
100 static int back_comment P_ ((EMACS_INT, EMACS_INT, EMACS_INT, int, int,
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
101 EMACS_INT *, EMACS_INT *));
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
102 static int char_quoted P_ ((int, int));
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
103 static Lisp_Object skip_chars P_ ((int, int, Lisp_Object, Lisp_Object, int));
71740
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
104 static Lisp_Object scan_lists P_ ((EMACS_INT, EMACS_INT, EMACS_INT, int));
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
105 static void scan_sexps_forward P_ ((struct lisp_parse_state *,
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
106 int, int, int, int,
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
107 int, Lisp_Object, int));
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
108 static int in_classes P_ ((int, Lisp_Object));
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
109
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
110
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
111 struct gl_state_s gl_state; /* Global state of syntax parser. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
112
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
113 INTERVAL interval_of ();
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
114 #define INTERVALS_AT_ONCE 10 /* 1 + max-number of intervals
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
115 to scan to property-change. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
116
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
117 /* Update gl_state to an appropriate interval which contains CHARPOS. The
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
118 sign of COUNT give the relative position of CHARPOS wrt the previously
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
119 valid interval. If INIT, only [be]_property fields of gl_state are
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
120 valid at start, the rest is filled basing on OBJECT.
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
121
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
122 `gl_state.*_i' are the intervals, and CHARPOS is further in the search
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
123 direction than the intervals - or in an interval. We update the
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
124 current syntax-table basing on the property of this interval, and
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
125 update the interval to start further than CHARPOS - or be
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
126 NULL_INTERVAL. We also update lim_property to be the next value of
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
127 charpos to call this subroutine again - or be before/after the
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
128 start/end of OBJECT. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
129
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
130 void
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
131 update_syntax_table (charpos, count, init, object)
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
132 int charpos, count, init;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
133 Lisp_Object object;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
134 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
135 Lisp_Object tmp_table;
25771
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
136 int cnt = 0, invalidate = 1;
65215
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
137 INTERVAL i;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
138
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
139 if (init)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
140 {
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
141 gl_state.old_prop = Qnil;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
142 gl_state.start = gl_state.b_property;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
143 gl_state.stop = gl_state.e_property;
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
144 i = interval_of (charpos, object);
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
145 gl_state.backward_i = gl_state.forward_i = i;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
146 invalidate = 0;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
147 if (NULL_INTERVAL_P (i))
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
148 return;
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
149 /* interval_of updates only ->position of the return value, so
21011
ceb05db73a63 (update_syntax_table): Properly update `position' field of used intervals.
Richard M. Stallman <rms@gnu.org>
parents: 20956
diff changeset
150 update the parents manually to speed up update_interval. */
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
151 while (!NULL_PARENT (i))
21011
ceb05db73a63 (update_syntax_table): Properly update `position' field of used intervals.
Richard M. Stallman <rms@gnu.org>
parents: 20956
diff changeset
152 {
ceb05db73a63 (update_syntax_table): Properly update `position' field of used intervals.
Richard M. Stallman <rms@gnu.org>
parents: 20956
diff changeset
153 if (AM_RIGHT_CHILD (i))
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 27812
diff changeset
154 INTERVAL_PARENT (i)->position = i->position
21011
ceb05db73a63 (update_syntax_table): Properly update `position' field of used intervals.
Richard M. Stallman <rms@gnu.org>
parents: 20956
diff changeset
155 - LEFT_TOTAL_LENGTH (i) + TOTAL_LENGTH (i) /* right end */
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 27812
diff changeset
156 - TOTAL_LENGTH (INTERVAL_PARENT (i))
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 27812
diff changeset
157 + LEFT_TOTAL_LENGTH (INTERVAL_PARENT (i));
21011
ceb05db73a63 (update_syntax_table): Properly update `position' field of used intervals.
Richard M. Stallman <rms@gnu.org>
parents: 20956
diff changeset
158 else
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 27812
diff changeset
159 INTERVAL_PARENT (i)->position = i->position - LEFT_TOTAL_LENGTH (i)
21011
ceb05db73a63 (update_syntax_table): Properly update `position' field of used intervals.
Richard M. Stallman <rms@gnu.org>
parents: 20956
diff changeset
160 + TOTAL_LENGTH (i);
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 27812
diff changeset
161 i = INTERVAL_PARENT (i);
21011
ceb05db73a63 (update_syntax_table): Properly update `position' field of used intervals.
Richard M. Stallman <rms@gnu.org>
parents: 20956
diff changeset
162 }
ceb05db73a63 (update_syntax_table): Properly update `position' field of used intervals.
Richard M. Stallman <rms@gnu.org>
parents: 20956
diff changeset
163 i = gl_state.forward_i;
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
164 gl_state.b_property = i->position - gl_state.offset;
20956
15d1b7bf1cd7 (update_syntax_table): Fix calculations using offset.
Karl Heuer <kwzh@gnu.org>
parents: 20905
diff changeset
165 gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
166 goto update;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
167 }
65215
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
168 i = count > 0 ? gl_state.forward_i : gl_state.backward_i;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
169
37532
f14973be41f5 (update_syntax_table): Check that oldi has the same
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34398
diff changeset
170 /* We are guaranteed to be called with CHARPOS either in i,
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
171 or further off. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
172 if (NULL_INTERVAL_P (i))
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
173 error ("Error in syntax_table logic for to-the-end intervals");
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
174 else if (charpos < i->position) /* Move left. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
175 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
176 if (count > 0)
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
177 error ("Error in syntax_table logic for intervals <-");
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
178 /* Update the interval. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
179 i = update_interval (i, charpos);
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
180 if (INTERVAL_LAST_POS (i) != gl_state.b_property)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
181 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
182 invalidate = 0;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
183 gl_state.forward_i = i;
20956
15d1b7bf1cd7 (update_syntax_table): Fix calculations using offset.
Karl Heuer <kwzh@gnu.org>
parents: 20905
diff changeset
184 gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
185 }
37532
f14973be41f5 (update_syntax_table): Check that oldi has the same
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34398
diff changeset
186 }
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
187 else if (charpos >= INTERVAL_LAST_POS (i)) /* Move right. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
188 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
189 if (count < 0)
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
190 error ("Error in syntax_table logic for intervals ->");
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
191 /* Update the interval. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
192 i = update_interval (i, charpos);
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
193 if (i->position != gl_state.e_property)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
194 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
195 invalidate = 0;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
196 gl_state.backward_i = i;
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
197 gl_state.b_property = i->position - gl_state.offset;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
198 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
199 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
200
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
201 update:
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
202 tmp_table = textget (i->plist, Qsyntax_table);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
203
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
204 if (invalidate)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
205 invalidate = !EQ (tmp_table, gl_state.old_prop); /* Need to invalidate? */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
206
37532
f14973be41f5 (update_syntax_table): Check that oldi has the same
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34398
diff changeset
207 if (invalidate) /* Did not get to adjacent interval. */
f14973be41f5 (update_syntax_table): Check that oldi has the same
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34398
diff changeset
208 { /* with the same table => */
f14973be41f5 (update_syntax_table): Check that oldi has the same
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34398
diff changeset
209 /* invalidate the old range. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
210 if (count > 0)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
211 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
212 gl_state.backward_i = i;
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
213 gl_state.b_property = i->position - gl_state.offset;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
214 }
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
215 else
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
216 {
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
217 gl_state.forward_i = i;
20956
15d1b7bf1cd7 (update_syntax_table): Fix calculations using offset.
Karl Heuer <kwzh@gnu.org>
parents: 20905
diff changeset
218 gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
219 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
220 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
221
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
222 if (!EQ (tmp_table, gl_state.old_prop))
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
223 {
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
224 gl_state.current_syntax_table = tmp_table;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
225 gl_state.old_prop = tmp_table;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
226 if (EQ (Fsyntax_table_p (tmp_table), Qt))
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
227 {
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
228 gl_state.use_global = 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
229 }
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
230 else if (CONSP (tmp_table))
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
231 {
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
232 gl_state.use_global = 1;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
233 gl_state.global_code = tmp_table;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
234 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
235 else
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
236 {
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
237 gl_state.use_global = 0;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
238 gl_state.current_syntax_table = current_buffer->syntax_table;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
239 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
240 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
241
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
242 while (!NULL_INTERVAL_P (i))
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
243 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
244 if (cnt && !EQ (tmp_table, textget (i->plist, Qsyntax_table)))
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
245 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
246 if (count > 0)
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
247 {
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
248 gl_state.e_property = i->position - gl_state.offset;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
249 gl_state.forward_i = i;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
250 }
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
251 else
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
252 {
65215
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
253 gl_state.b_property
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
254 = i->position + LENGTH (i) - gl_state.offset;
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
255 gl_state.backward_i = i;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
256 }
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
257 return;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
258 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
259 else if (cnt == INTERVALS_AT_ONCE)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
260 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
261 if (count > 0)
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
262 {
65215
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
263 gl_state.e_property
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
264 = i->position + LENGTH (i) - gl_state.offset
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
265 /* e_property at EOB is not set to ZV but to ZV+1, so that
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
266 we can do INC(from);UPDATE_SYNTAX_TABLE_FORWARD without
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
267 having to check eob between the two. */
c37b7f6542ec (update_syntax_table): Properly reproduce the special +1
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64770
diff changeset
268 + (NULL_INTERVAL_P (next_interval (i)) ? 1 : 0);
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
269 gl_state.forward_i = i;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
270 }
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
271 else
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
272 {
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
273 gl_state.b_property = i->position - gl_state.offset;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
274 gl_state.backward_i = i;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
275 }
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
276 return;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
277 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
278 cnt++;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
279 i = count > 0 ? next_interval (i) : previous_interval (i);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
280 }
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
281 eassert (NULL_INTERVAL_P (i)); /* This property goes to the end. */
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
282 if (count > 0)
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
283 gl_state.e_property = gl_state.stop;
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
284 else
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
285 gl_state.b_property = gl_state.start;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
286 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
287
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
288 /* Returns TRUE if char at CHARPOS is quoted.
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
289 Global syntax-table data should be set up already to be good at CHARPOS
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
290 or after. On return global syntax data is good for lookup at CHARPOS. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
291
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
292 static int
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
293 char_quoted (charpos, bytepos)
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
294 register int charpos, bytepos;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
295 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
296 register enum syntaxcode code;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
297 register int beg = BEGV;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
298 register int quoted = 0;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
299 int orig = charpos;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
300
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
301 DEC_BOTH (charpos, bytepos);
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
302
56719
ba478e06c729 (char_quoted): Mixup byte/char pos.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56295
diff changeset
303 while (charpos >= beg)
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
304 {
56067
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
305 int c;
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
306
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
307 UPDATE_SYNTAX_TABLE_BACKWARD (charpos);
56067
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
308 c = FETCH_CHAR (bytepos);
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
309 code = SYNTAX (c);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
310 if (! (code == Scharquote || code == Sescape))
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
311 break;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
312
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
313 DEC_BOTH (charpos, bytepos);
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
314 quoted = !quoted;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
315 }
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
316
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
317 UPDATE_SYNTAX_TABLE (orig);
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
318 return quoted;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
319 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
320
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
321 /* Return the bytepos one character after BYTEPOS.
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
322 We assume that BYTEPOS is not at the end of the buffer. */
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
323
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
324 INLINE int
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
325 inc_bytepos (bytepos)
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
326 int bytepos;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
327 {
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
328 if (NILP (current_buffer->enable_multibyte_characters))
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
329 return bytepos + 1;
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
330
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
331 INC_POS (bytepos);
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
332 return bytepos;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
333 }
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
334
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
335 /* Return the bytepos one character before BYTEPOS.
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
336 We assume that BYTEPOS is not at the start of the buffer. */
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
337
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
338 INLINE int
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
339 dec_bytepos (bytepos)
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
340 int bytepos;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
341 {
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
342 if (NILP (current_buffer->enable_multibyte_characters))
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
343 return bytepos - 1;
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
344
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
345 DEC_POS (bytepos);
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
346 return bytepos;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
347 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
348
39195
004939041c32 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 38047
diff changeset
349 /* Return a defun-start position before before POS and not too far before.
004939041c32 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 38047
diff changeset
350 It should be the last one before POS, or nearly the last.
004939041c32 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 38047
diff changeset
351
004939041c32 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 38047
diff changeset
352 When open_paren_in_column_0_is_defun_start is nonzero,
51036
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
353 only the beginning of the buffer is treated as a defun-start.
39195
004939041c32 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 38047
diff changeset
354
004939041c32 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 38047
diff changeset
355 We record the information about where the scan started
004939041c32 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 38047
diff changeset
356 and what its result was, so that another call in the same area
004939041c32 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 38047
diff changeset
357 can return the same value very quickly.
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
358
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
359 There is no promise at which position the global syntax data is
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
360 valid on return from the subroutine, so the caller should explicitly
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
361 update the global data. */
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
362
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
363 static int
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
364 find_defun_start (pos, pos_byte)
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
365 int pos, pos_byte;
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
366 {
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
367 int opoint = PT, opoint_byte = PT_BYTE;
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
368
51036
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
369 if (!open_paren_in_column_0_is_defun_start)
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
370 {
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
371 find_start_value_byte = BEGV_BYTE;
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
372 return BEGV;
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
373 }
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
374
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
375 /* Use previous finding, if it's valid and applies to this inquiry. */
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
376 if (current_buffer == find_start_buffer
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
377 /* Reuse the defun-start even if POS is a little farther on.
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
378 POS might be in the next defun, but that's ok.
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
379 Our value may not be the best possible, but will still be usable. */
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
380 && pos <= find_start_pos + 1000
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
381 && pos >= find_start_value
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
382 && BEGV == find_start_begv
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
383 && MODIFF == find_start_modiff)
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
384 return find_start_value;
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
385
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
386 /* Back up to start of line. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
387 scan_newline (pos, pos_byte, BEGV, BEGV_BYTE, -1, 1);
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
388
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
389 /* We optimize syntax-table lookup for rare updates. Thus we accept
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
390 only those `^\s(' which are good in global _and_ text-property
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
391 syntax-tables. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
392 gl_state.current_syntax_table = current_buffer->syntax_table;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
393 gl_state.use_global = 0;
51036
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
394 while (PT > BEGV)
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
395 {
56067
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
396 int c;
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
397
51036
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
398 /* Open-paren at start of line means we may have found our
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
399 defun-start. */
56067
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
400 c = FETCH_CHAR (PT_BYTE);
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
401 if (SYNTAX (c) == Sopen)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
402 {
51036
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
403 SETUP_SYNTAX_TABLE (PT + 1, -1); /* Try again... */
56067
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
404 c = FETCH_CHAR (PT_BYTE);
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
405 if (SYNTAX (c) == Sopen)
51036
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
406 break;
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
407 /* Now fallback to the default value. */
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
408 gl_state.current_syntax_table = current_buffer->syntax_table;
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
409 gl_state.use_global = 0;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
410 }
51036
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
411 /* Move to beg of previous line. */
5a30d8fb640c (find_defun_start): When open_paren_in_column_0_is_defun_start,
Richard M. Stallman <rms@gnu.org>
parents: 50697
diff changeset
412 scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -2, 1);
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
413 }
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
414
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
415 /* Record what we found, for the next try. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
416 find_start_value = PT;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
417 find_start_value_byte = PT_BYTE;
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
418 find_start_buffer = current_buffer;
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
419 find_start_modiff = MODIFF;
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
420 find_start_begv = BEGV;
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
421 find_start_pos = pos;
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
422
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
423 TEMP_SET_PT_BOTH (opoint, opoint_byte);
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
424
1167
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
425 return find_start_value;
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
426 }
a9aeeaa9da8f (scan_lists): When searching back for comment:
Richard M. Stallman <rms@gnu.org>
parents: 1085
diff changeset
427
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
428 /* Return the SYNTAX_COMEND_FIRST of the character before POS, POS_BYTE. */
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
429
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
430 static int
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
431 prev_char_comend_first (pos, pos_byte)
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
432 int pos, pos_byte;
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
433 {
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
434 int c, val;
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
435
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
436 DEC_BOTH (pos, pos_byte);
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
437 UPDATE_SYNTAX_TABLE_BACKWARD (pos);
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
438 c = FETCH_CHAR (pos_byte);
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
439 val = SYNTAX_COMEND_FIRST (c);
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
440 UPDATE_SYNTAX_TABLE_FORWARD (pos + 1);
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
441 return val;
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
442 }
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
443
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
444 /* Return the SYNTAX_COMSTART_FIRST of the character before POS, POS_BYTE. */
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
445
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
446 /* static int
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
447 * prev_char_comstart_first (pos, pos_byte)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
448 * int pos, pos_byte;
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
449 * {
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
450 * int c, val;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
451 *
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
452 * DEC_BOTH (pos, pos_byte);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
453 * UPDATE_SYNTAX_TABLE_BACKWARD (pos);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
454 * c = FETCH_CHAR (pos_byte);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
455 * val = SYNTAX_COMSTART_FIRST (c);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
456 * UPDATE_SYNTAX_TABLE_FORWARD (pos + 1);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
457 * return val;
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
458 * } */
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
459
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
460 /* Checks whether charpos FROM is at the end of a comment.
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
461 FROM_BYTE is the bytepos corresponding to FROM.
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
462 Do not move back before STOP.
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
463
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
464 Return a positive value if we find a comment ending at FROM/FROM_BYTE;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
465 return -1 otherwise.
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
466
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
467 If successful, store the charpos of the comment's beginning
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
468 into *CHARPOS_PTR, and the bytepos into *BYTEPOS_PTR.
20330
f76b9c0ebc4b (back_comment): Handle 2-char comment starts
Karl Heuer <kwzh@gnu.org>
parents: 20292
diff changeset
469
f76b9c0ebc4b (back_comment): Handle 2-char comment starts
Karl Heuer <kwzh@gnu.org>
parents: 20292
diff changeset
470 Global syntax data remains valid for backward search starting at
f76b9c0ebc4b (back_comment): Handle 2-char comment starts
Karl Heuer <kwzh@gnu.org>
parents: 20292
diff changeset
471 the returned value (or at FROM, if the search was not successful). */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
472
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
473 static int
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
474 back_comment (from, from_byte, stop, comnested, comstyle, charpos_ptr, bytepos_ptr)
71740
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
475 EMACS_INT from, from_byte, stop;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
476 int comnested, comstyle;
71740
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
477 EMACS_INT *charpos_ptr, *bytepos_ptr;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
478 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
479 /* Look back, counting the parity of string-quotes,
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
480 and recording the comment-starters seen.
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
481 When we reach a safe place, assume that's not in a string;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
482 then step the main scan to the earliest comment-starter seen
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
483 an even number of string quotes away from the safe place.
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
484
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
485 OFROM[I] is position of the earliest comment-starter seen
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
486 which is I+2X quotes from the comment-end.
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
487 PARITY is current parity of quotes from the comment end. */
29835
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
488 int string_style = -1; /* Presumed outside of any string. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
489 int string_lossage = 0;
31209
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
490 /* Not a real lossage: indicates that we have passed a matching comment
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
491 starter plus a non-matching comment-ender, meaning that any matching
31209
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
492 comment-starter we might see later could be a false positive (hidden
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
493 inside another comment).
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
494 Test case: { a (* b } c (* d *) */
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
495 int comment_lossage = 0;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
496 int comment_end = from;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
497 int comment_end_byte = from_byte;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
498 int comstart_pos = 0;
20766
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
499 int comstart_byte;
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
500 /* Place where the containing defun starts,
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
501 or 0 if we didn't come across it yet. */
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
502 int defun_start = 0;
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
503 int defun_start_byte = 0;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
504 register enum syntaxcode code;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
505 int nesting = 1; /* current comment nesting */
18079
5fbb5aef5649 (back_comment): Detect 2-char comment starts properly.
Richard M. Stallman <rms@gnu.org>
parents: 17786
diff changeset
506 int c;
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
507 int syntax = 0;
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
508
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
509 /* FIXME: A }} comment-ender style leads to incorrect behavior
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
510 in the case of {{ c }}} because we ignore the last two chars which are
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
511 assumed to be comment-enders although they aren't. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
512
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
513 /* At beginning of range to scan, we're outside of strings;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
514 that determines quote parity to the comment-end. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
515 while (from != stop)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
516 {
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
517 int temp_byte, prev_syntax;
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
518 int com2start, com2end;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
519
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
520 /* Move back and examine a character. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
521 DEC_BOTH (from, from_byte);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
522 UPDATE_SYNTAX_TABLE_BACKWARD (from);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
523
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
524 prev_syntax = syntax;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
525 c = FETCH_CHAR (from_byte);
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
526 syntax = SYNTAX_WITH_FLAGS (c);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
527 code = SYNTAX (c);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
528
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
529 /* Check for 2-char comment markers. */
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
530 com2start = (SYNTAX_FLAGS_COMSTART_FIRST (syntax)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
531 && SYNTAX_FLAGS_COMSTART_SECOND (prev_syntax)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
532 && comstyle == SYNTAX_FLAGS_COMMENT_STYLE (prev_syntax)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
533 && (SYNTAX_FLAGS_COMMENT_NESTED (prev_syntax)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
534 || SYNTAX_FLAGS_COMMENT_NESTED (syntax)) == comnested);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
535 com2end = (SYNTAX_FLAGS_COMEND_FIRST (syntax)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
536 && SYNTAX_FLAGS_COMEND_SECOND (prev_syntax));
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
537
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
538 /* Nasty cases with overlapping 2-char comment markers:
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
539 - snmp-mode: -- c -- foo -- c --
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
540 --- c --
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
541 ------ c --
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
542 - c-mode: *||*
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
543 |* *|* *|
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
544 |*| |* |*|
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
545 /// */
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
546
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
547 /* If a 2-char comment sequence partly overlaps with another,
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
548 we don't try to be clever. */
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
549 if (from > stop && (com2end || com2start))
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
550 {
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
551 int next = from, next_byte = from_byte, next_c, next_syntax;
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
552 DEC_BOTH (next, next_byte);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
553 UPDATE_SYNTAX_TABLE_BACKWARD (next);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
554 next_c = FETCH_CHAR (next_byte);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
555 next_syntax = SYNTAX_WITH_FLAGS (next_c);
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
556 if (((com2start || comnested)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
557 && SYNTAX_FLAGS_COMEND_SECOND (syntax)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
558 && SYNTAX_FLAGS_COMEND_FIRST (next_syntax))
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
559 || ((com2end || comnested)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
560 && SYNTAX_FLAGS_COMSTART_SECOND (syntax)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
561 && comstyle == SYNTAX_FLAGS_COMMENT_STYLE (syntax)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
562 && SYNTAX_FLAGS_COMSTART_FIRST (next_syntax)))
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
563 goto lossage;
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
564 /* UPDATE_SYNTAX_TABLE_FORWARD (next + 1); */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
565 }
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
566
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
567 if (com2start && comstart_pos == 0)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
568 /* We're looking at a comment starter. But it might be a comment
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
569 ender as well (see snmp-mode). The first time we see one, we
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
570 need to consider it as a comment starter,
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
571 and the subsequent times as a comment ender. */
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
572 com2end = 0;
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
573
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
574 /* Turn a 2-char comment sequences into the appropriate syntax. */
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
575 if (com2end)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
576 code = Sendcomment;
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
577 else if (com2start)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
578 code = Scomment;
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
579 /* Ignore comment starters of a different style. */
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
580 else if (code == Scomment
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
581 && (comstyle != SYNTAX_FLAGS_COMMENT_STYLE (syntax)
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
582 || SYNTAX_FLAGS_COMMENT_NESTED (syntax) != comnested))
27698
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
583 continue;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
584
20674
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
585 /* Ignore escaped characters, except comment-enders. */
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
586 if (code != Sendcomment && char_quoted (from, from_byte))
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
587 continue;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
588
29835
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
589 switch (code)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
590 {
29835
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
591 case Sstring_fence:
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
592 case Scomment_fence:
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
593 c = (code == Sstring_fence ? ST_STRING_STYLE : ST_COMMENT_STYLE);
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
594 case Sstring:
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
595 /* Track parity of quotes. */
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
596 if (string_style == -1)
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
597 /* Entering a string. */
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
598 string_style = c;
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
599 else if (string_style == c)
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
600 /* Leaving the string. */
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
601 string_style = -1;
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
602 else
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
603 /* If we have two kinds of string delimiters.
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
604 There's no way to grok this scanning backwards. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
605 string_lossage = 1;
29835
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
606 break;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
607
29835
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
608 case Scomment:
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
609 /* We've already checked that it is the relevant comstyle. */
31209
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
610 if (string_style != -1 || comment_lossage || string_lossage)
29835
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
611 /* There are odd string quotes involved, so let's be careful.
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
612 Test case in Pascal: " { " a { " } */
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
613 goto lossage;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
614
31209
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
615 if (!comnested)
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
616 {
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
617 /* Record best comment-starter so far. */
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
618 comstart_pos = from;
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
619 comstart_byte = from_byte;
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
620 }
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
621 else if (--nesting <= 0)
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
622 /* nested comments have to be balanced, so we don't need to
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
623 keep looking for earlier ones. We use here the same (slightly
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
624 incorrect) reasoning as below: since it is followed by uniform
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
625 paired string quotes, this comment-start has to be outside of
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
626 strings, else the comment-end itself would be inside a string. */
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
627 goto done;
29835
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
628 break;
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
629
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
630 case Sendcomment:
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
631 if (SYNTAX_FLAGS_COMMENT_STYLE (syntax) == comstyle
49971
afbb2d6d2f07 (back_comment): Only check nestedness of 2nd char if needed.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
632 && ((com2end && SYNTAX_FLAGS_COMMENT_NESTED (prev_syntax))
32087
83ecc6bc4bc2 (prev_char_comstart_first): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32086
diff changeset
633 || SYNTAX_FLAGS_COMMENT_NESTED (syntax)) == comnested)
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
634 /* This is the same style of comment ender as ours. */
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
635 {
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
636 if (comnested)
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
637 nesting++;
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
638 else
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
639 /* Anything before that can't count because it would match
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
640 this comment-ender rather than ours. */
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
641 from = stop; /* Break out of the loop. */
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
642 }
31209
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
643 else if (comstart_pos != 0 || c != '\n')
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
644 /* We're mixing comment styles here, so we'd better be careful.
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
645 The (comstart_pos != 0 || c != '\n') check is not quite correct
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
646 (we should just always set comment_lossage), but removing it
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
647 would imply that any multiline comment in C would go through
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
648 lossage, which seems overkill.
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
649 The failure should only happen in the rare cases such as
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
650 { (* } *) */
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
651 comment_lossage = 1;
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
652 break;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
653
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
654 case Sopen:
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
655 /* Assume a defun-start point is outside of strings. */
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
656 if (open_paren_in_column_0_is_defun_start
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
657 && (from == stop
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
658 || (temp_byte = dec_bytepos (from_byte),
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
659 FETCH_CHAR (temp_byte) == '\n')))
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
660 {
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
661 defun_start = from;
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
662 defun_start_byte = from_byte;
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
663 from = stop; /* Break out of the loop. */
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
664 }
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
665 break;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
666
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
667 default:
31209
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
668 break;
20766
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
669 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
670 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
671
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
672 if (comstart_pos == 0)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
673 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
674 from = comment_end;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
675 from_byte = comment_end_byte;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
676 UPDATE_SYNTAX_TABLE_FORWARD (comment_end - 1);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
677 }
31209
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
678 /* If comstart_pos is set and we get here (ie. didn't jump to `lossage'
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
679 or `done'), then we've found the beginning of the non-nested comment. */
00943ea58fd1 (back_comment): Detect cases where a comment-starter is
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30626
diff changeset
680 else if (1) /* !comnested */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
681 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
682 from = comstart_pos;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
683 from_byte = comstart_byte;
56720
7c89be334c1b (back_comment): Fixup globals in all cases.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56719
diff changeset
684 UPDATE_SYNTAX_TABLE_FORWARD (from - 1);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
685 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
686 else
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
687 {
29835
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
688 struct lisp_parse_state state;
5dec8ee96c0c (back_comment): Simplify string-parity counting (with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29823
diff changeset
689 lossage:
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
690 /* We had two kinds of string delimiters mixed up
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
691 together. Decode this going forwards.
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
692 Scan fwd from a known safe place (beginning-of-defun)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
693 to the one in question; this records where we
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
694 last passed a comment starter. */
20766
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
695 /* If we did not already find the defun start, find it now. */
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
696 if (defun_start == 0)
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
697 {
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
698 defun_start = find_defun_start (comment_end, comment_end_byte);
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
699 defun_start_byte = find_start_value_byte;
92c662c4ab0e (back_comment): Move the find_defun_start call
Richard M. Stallman <rms@gnu.org>
parents: 20704
diff changeset
700 }
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
701 do
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
702 {
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
703 scan_sexps_forward (&state,
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
704 defun_start, defun_start_byte,
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
705 comment_end, -10000, 0, Qnil, 0);
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
706 defun_start = comment_end;
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
707 if (state.incomment == (comnested ? 1 : -1)
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
708 && state.comstyle == comstyle)
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
709 from = state.comstr_start;
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
710 else
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
711 {
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
712 from = comment_end;
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
713 if (state.incomment)
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
714 /* If comment_end is inside some other comment, maybe ours
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
715 is nested, so we need to try again from within the
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
716 surrounding comment. Example: { a (* " *) */
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
717 {
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
718 /* FIXME: We should advance by one or two chars. */
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
719 defun_start = state.comstr_start + 2;
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
720 defun_start_byte = CHAR_TO_BYTE (defun_start);
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
721 }
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
722 }
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
723 } while (defun_start < comment_end);
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
724
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
725 from_byte = CHAR_TO_BYTE (from);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
726 UPDATE_SYNTAX_TABLE_FORWARD (from - 1);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
727 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
728
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
729 done:
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
730 *charpos_ptr = from;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
731 *bytepos_ptr = from_byte;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
732
27698
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
733 return (from == comment_end) ? -1 : from;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
734 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
735
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 DEFUN ("syntax-table-p", Fsyntax_table_p, Ssyntax_table_p, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
737 doc: /* Return t if OBJECT is a syntax table.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
738 Currently, any char-table counts as a syntax table. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
739 (object)
14087
1709d9f11c66 (Fsyntax_table_p, Fchar_syntax, Fmatching_paren, Fmodify_syntax_entry):
Erik Naggum <erik@naggum.no>
parents: 13513
diff changeset
740 Lisp_Object object;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 {
14087
1709d9f11c66 (Fsyntax_table_p, Fchar_syntax, Fmatching_paren, Fmodify_syntax_entry):
Erik Naggum <erik@naggum.no>
parents: 13513
diff changeset
742 if (CHAR_TABLE_P (object)
18113
9f7fdb0f76f3 (Fsyntax_table_p, check_syntax_table): Use EQ.
Richard M. Stallman <rms@gnu.org>
parents: 18080
diff changeset
743 && EQ (XCHAR_TABLE (object)->purpose, Qsyntax_table))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 return Qt;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 return Qnil;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
748 static void
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 check_syntax_table (obj)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 Lisp_Object obj;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 {
71843
2d05f598fa85 (check_syntax_table): Use CHECK_TYPE.
Kim F. Storm <storm@cua.dk>
parents: 71787
diff changeset
752 CHECK_TYPE (CHAR_TABLE_P (obj) && EQ (XCHAR_TABLE (obj)->purpose, Qsyntax_table),
2d05f598fa85 (check_syntax_table): Use CHECK_TYPE.
Kim F. Storm <storm@cua.dk>
parents: 71787
diff changeset
753 Qsyntax_table_p, obj);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
754 }
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 DEFUN ("syntax-table", Fsyntax_table, Ssyntax_table, 0, 0, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
757 doc: /* Return the current syntax table.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
758 This is the one specified by the current buffer. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
759 ()
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 return current_buffer->syntax_table;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 DEFUN ("standard-syntax-table", Fstandard_syntax_table,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 Sstandard_syntax_table, 0, 0, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
766 doc: /* Return the standard syntax table.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
767 This is the one used for new buffers. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
768 ()
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 return Vstandard_syntax_table;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 DEFUN ("copy-syntax-table", Fcopy_syntax_table, Scopy_syntax_table, 0, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
774 doc: /* Construct a new syntax table and return it.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
775 It is a copy of the TABLE, which defaults to the standard syntax table. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
776 (table)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 Lisp_Object table;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 {
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
779 Lisp_Object copy;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
780
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 163
diff changeset
781 if (!NILP (table))
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
782 check_syntax_table (table);
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
783 else
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
784 table = Vstandard_syntax_table;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
786 copy = Fcopy_sequence (table);
14661
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
787
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
788 /* Only the standard syntax table should have a default element.
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
789 Other syntax tables should inherit from parents instead. */
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
790 XCHAR_TABLE (copy)->defalt = Qnil;
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
791
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
792 /* Copied syntax tables should all have parents.
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
793 If we copied one with no parent, such as the standard syntax table,
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
794 use the standard syntax table as the copy's parent. */
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
795 if (NILP (XCHAR_TABLE (copy)->parent))
46ba65e7976c (Fcopy_syntax_table): Set default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
796 Fset_char_table_parent (copy, Vstandard_syntax_table);
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
797 return copy;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 DEFUN ("set-syntax-table", Fset_syntax_table, Sset_syntax_table, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
801 doc: /* Select a new syntax table for the current buffer.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
802 One argument, a syntax table. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
803 (table)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 Lisp_Object table;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 {
28313
cdb964ab44c3 (Fset_syntax_table): Use new macros for per-buffer
Gerd Moellmann <gerd@gnu.org>
parents: 28302
diff changeset
806 int idx;
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
807 check_syntax_table (table);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 current_buffer->syntax_table = table;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 /* Indicate that this buffer now has a specified syntax table. */
28351
e3d57f7fba49 Use new macro names
Gerd Moellmann <gerd@gnu.org>
parents: 28313
diff changeset
810 idx = PER_BUFFER_VAR_IDX (syntax_table);
e3d57f7fba49 Use new macro names
Gerd Moellmann <gerd@gnu.org>
parents: 28313
diff changeset
811 SET_PER_BUFFER_VALUE_P (current_buffer, idx, 1);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 return table;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 /* Convert a letter which signifies a syntax code
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 into the code it signifies.
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
817 This is used by modify-syntax-entry, and other things. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 unsigned char syntax_spec_code[0400] =
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820 { 0377, 0377, 0377, 0377, 0377, 0377, 0377, 0377,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 0377, 0377, 0377, 0377, 0377, 0377, 0377, 0377,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 0377, 0377, 0377, 0377, 0377, 0377, 0377, 0377,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 0377, 0377, 0377, 0377, 0377, 0377, 0377, 0377,
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
824 (char) Swhitespace, (char) Scomment_fence, (char) Sstring, 0377,
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 (char) Smath, 0377, 0377, (char) Squote,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 (char) Sopen, (char) Sclose, 0377, 0377,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 0377, (char) Swhitespace, (char) Spunct, (char) Scharquote,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 0377, 0377, 0377, 0377, 0377, 0377, 0377, 0377,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 0377, 0377, 0377, 0377,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 (char) Scomment, 0377, (char) Sendcomment, 0377,
5442
8cbae747a768 (describe_syntax): Handle Sinherit.
Richard M. Stallman <rms@gnu.org>
parents: 5339
diff changeset
831 (char) Sinherit, 0377, 0377, 0377, 0377, 0377, 0377, 0377, /* @, A ... */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 0377, 0377, 0377, 0377, 0377, 0377, 0377, 0377,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 0377, 0377, 0377, 0377, 0377, 0377, 0377, (char) Sword,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 0377, 0377, 0377, 0377, (char) Sescape, 0377, 0377, (char) Ssymbol,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 0377, 0377, 0377, 0377, 0377, 0377, 0377, 0377, /* `, a, ... */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 0377, 0377, 0377, 0377, 0377, 0377, 0377, 0377,
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 0377, 0377, 0377, 0377, 0377, 0377, 0377, (char) Sword,
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
838 0377, 0377, 0377, 0377, (char) Sstring_fence, 0377, 0377, 0377
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 };
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
841 /* Indexed by syntax code, give the letter that describes it. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
843 char syntax_code_spec[16] =
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 {
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
845 ' ', '.', 'w', '_', '(', ')', '\'', '\"', '$', '\\', '/', '<', '>', '@',
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
846 '!', '|'
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 };
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
848
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
849 /* Indexed by syntax code, give the object (cons of syntax code and
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
850 nil) to be stored in syntax table. Since these objects can be
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
851 shared among syntax tables, we generate them in advance. By
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
852 sharing objects, the function `describe-syntax' can give a more
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
853 compact listing. */
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
854 static Lisp_Object Vsyntax_code_object;
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
855
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
857 /* Look up the value for CHARACTER in syntax table TABLE's parent
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
858 and its parents. SYNTAX_ENTRY calls this, when TABLE itself has nil
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
859 for CHARACTER. It's actually used only when not compiled with GCC. */
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
860
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
861 Lisp_Object
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
862 syntax_parent_lookup (table, character)
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
863 Lisp_Object table;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
864 int character;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
865 {
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
866 Lisp_Object value;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
867
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
868 while (1)
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
869 {
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
870 table = XCHAR_TABLE (table)->parent;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
871 if (NILP (table))
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
872 return Qnil;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
873
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
874 value = XCHAR_TABLE (table)->contents[character];
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
875 if (!NILP (value))
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
876 return value;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
877 }
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
878 }
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
879
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 DEFUN ("char-syntax", Fchar_syntax, Schar_syntax, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
881 doc: /* Return the syntax code of CHARACTER, described by a character.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
882 For example, if CHARACTER is a word constituent,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
883 the character `w' is returned.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
884 The characters that correspond to various syntax codes
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
885 are listed in the documentation of `modify-syntax-entry'. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
886 (character)
14087
1709d9f11c66 (Fsyntax_table_p, Fchar_syntax, Fmatching_paren, Fmodify_syntax_entry):
Erik Naggum <erik@naggum.no>
parents: 13513
diff changeset
887 Lisp_Object character;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 {
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
889 int char_int;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
890 gl_state.current_syntax_table = current_buffer->syntax_table;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
891
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
892 gl_state.use_global = 0;
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
893 CHECK_NUMBER (character);
14087
1709d9f11c66 (Fsyntax_table_p, Fchar_syntax, Fmatching_paren, Fmodify_syntax_entry):
Erik Naggum <erik@naggum.no>
parents: 13513
diff changeset
894 char_int = XINT (character);
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
895 return make_number (syntax_code_spec[(int) SYNTAX (char_int)]);
7968
a6372621abd9 (Fmatching_paren): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7924
diff changeset
896 }
a6372621abd9 (Fmatching_paren): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7924
diff changeset
897
a6372621abd9 (Fmatching_paren): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7924
diff changeset
898 DEFUN ("matching-paren", Fmatching_paren, Smatching_paren, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
899 doc: /* Return the matching parenthesis of CHARACTER, or nil if none. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
900 (character)
14087
1709d9f11c66 (Fsyntax_table_p, Fchar_syntax, Fmatching_paren, Fmodify_syntax_entry):
Erik Naggum <erik@naggum.no>
parents: 13513
diff changeset
901 Lisp_Object character;
7968
a6372621abd9 (Fmatching_paren): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7924
diff changeset
902 {
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
903 int char_int, code;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
904 gl_state.current_syntax_table = current_buffer->syntax_table;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
905 gl_state.use_global = 0;
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
906 CHECK_NUMBER (character);
14087
1709d9f11c66 (Fsyntax_table_p, Fchar_syntax, Fmatching_paren, Fmodify_syntax_entry):
Erik Naggum <erik@naggum.no>
parents: 13513
diff changeset
907 char_int = XINT (character);
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
908 code = SYNTAX (char_int);
7975
49dc4ea976a0 (Fmatching_paren): Fix typo.
Richard M. Stallman <rms@gnu.org>
parents: 7968
diff changeset
909 if (code == Sopen || code == Sclose)
18613
614b916ff5bf Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents: 18491
diff changeset
910 return SYNTAX_MATCH (char_int);
7968
a6372621abd9 (Fmatching_paren): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7924
diff changeset
911 return Qnil;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
914 DEFUN ("string-to-syntax", Fstring_to_syntax, Sstring_to_syntax, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
915 doc: /* Convert a syntax specification STRING into syntax cell form.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
916 STRING should be a string as it is allowed as argument of
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
917 `modify-syntax-entry'. Value is the equivalent cons cell
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
918 (CODE . MATCHING-CHAR) that can be used as value of a `syntax-table'
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
919 text property. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
920 (string)
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
921 Lisp_Object string;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 {
46555
35e66a0949b8 (Fstring_to_syntax, skip_chars): Treat Lisp string
Ken Raeburn <raeburn@raeburn.org>
parents: 46370
diff changeset
923 register const unsigned char *p;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 register enum syntaxcode code;
9333
925795f1a594 (Fmodify_syntax_entry): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9320
diff changeset
925 int val;
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
926 Lisp_Object match;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
928 CHECK_STRING (string);
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
929
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41598
diff changeset
930 p = SDATA (string);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 code = (enum syntaxcode) syntax_spec_code[*p++];
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 if (((int) code & 0377) == 0377)
63703
bb4ab751a6a3 (Fstring_to_syntax): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 58897
diff changeset
933 error ("Invalid syntax description letter: %c", p[-1]);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
935 if (code == Sinherit)
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
936 return Qnil;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
938 if (*p)
13513
907544cb2c7d (check_syntax_table): Check the purpose slot.
Richard M. Stallman <rms@gnu.org>
parents: 13218
diff changeset
939 {
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
940 int len;
22547
1cf8123f4c67 (Fmodify_syntax_entry): Use macro STRING_BYTES to get
Kenichi Handa <handa@m17n.org>
parents: 22486
diff changeset
941 int character = (STRING_CHAR_AND_LENGTH
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41598
diff changeset
942 (p, SBYTES (string) - 1, len));
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
943 XSETINT (match, character);
13513
907544cb2c7d (check_syntax_table): Check the purpose slot.
Richard M. Stallman <rms@gnu.org>
parents: 13218
diff changeset
944 if (XFASTINT (match) == ' ')
907544cb2c7d (check_syntax_table): Check the purpose slot.
Richard M. Stallman <rms@gnu.org>
parents: 13218
diff changeset
945 match = Qnil;
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
946 p += len;
13513
907544cb2c7d (check_syntax_table): Check the purpose slot.
Richard M. Stallman <rms@gnu.org>
parents: 13218
diff changeset
947 }
907544cb2c7d (check_syntax_table): Check the purpose slot.
Richard M. Stallman <rms@gnu.org>
parents: 13218
diff changeset
948 else
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
949 match = Qnil;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
950
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
951 val = (int) code;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 while (*p)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 switch (*p++)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 case '1':
9333
925795f1a594 (Fmodify_syntax_entry): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9320
diff changeset
956 val |= 1 << 16;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 case '2':
9333
925795f1a594 (Fmodify_syntax_entry): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9320
diff changeset
960 val |= 1 << 17;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 case '3':
9333
925795f1a594 (Fmodify_syntax_entry): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9320
diff changeset
964 val |= 1 << 18;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 case '4':
9333
925795f1a594 (Fmodify_syntax_entry): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9320
diff changeset
968 val |= 1 << 19;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 case 'p':
9333
925795f1a594 (Fmodify_syntax_entry): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9320
diff changeset
972 val |= 1 << 20;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 break;
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
974
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
975 case 'b':
9333
925795f1a594 (Fmodify_syntax_entry): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9320
diff changeset
976 val |= 1 << 21;
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
977 break;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
978
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
979 case 'n':
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
980 val |= 1 << 22;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
981 break;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
983
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
984 if (val < XVECTOR (Vsyntax_code_object)->size && NILP (match))
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
985 return XVECTOR (Vsyntax_code_object)->contents[val];
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
986 else
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
987 /* Since we can't use a shared object, let's make a new one. */
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
988 return Fcons (make_number (val), match);
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
989 }
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
990
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
991 /* I really don't know why this is interactive
40286
0e7059267f7e Fix comment ending.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40205
diff changeset
992 help-form should at least be made useful whilst reading the second arg. */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
993 DEFUN ("modify-syntax-entry", Fmodify_syntax_entry, Smodify_syntax_entry, 2, 3,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
994 "cSet syntax for character: \nsSet syntax for %s to: ",
40205
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
995 doc: /* Set syntax for character CHAR according to string NEWENTRY.
55423
a9e10b866486 (Fmodify_syntax_entry): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 54849
diff changeset
996 The syntax is changed only for table SYNTAX-TABLE, which defaults to
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
997 the current buffer's syntax table.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
998 The first character of NEWENTRY should be one of the following:
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
999 Space or - whitespace syntax. w word constituent.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1000 _ symbol constituent. . punctuation.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1001 ( open-parenthesis. ) close-parenthesis.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1002 " string quote. \\ escape.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1003 $ paired delimiter. ' expression quote or prefix operator.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1004 < comment starter. > comment ender.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1005 / character-quote. @ inherit from `standard-syntax-table'.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1006 | generic string fence. ! generic comment fence.
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1008 Only single-character comment start and end sequences are represented thus.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1009 Two-character sequences are represented as described below.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1010 The second character of NEWENTRY is the matching parenthesis,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1011 used only if the first character is `(' or `)'.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1012 Any additional characters are flags.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1013 Defined flags are the characters 1, 2, 3, 4, b, p, and n.
40205
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
1014 1 means CHAR is the start of a two-char comment start sequence.
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
1015 2 means CHAR is the second character of such a sequence.
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
1016 3 means CHAR is the start of a two-char comment end sequence.
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
1017 4 means CHAR is the second character of such a sequence.
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1018
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1019 There can be up to two orthogonal comment sequences. This is to support
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1020 language modes such as C++. By default, all comment sequences are of style
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1021 a, but you can set the comment sequence style to b (on the second character
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1022 of a comment-start, or the first character of a comment-end sequence) using
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1023 this flag:
40205
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
1024 b means CHAR is part of comment sequence b.
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
1025 n means CHAR is part of a nestable comment sequence.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1026
40205
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
1027 p means CHAR is a prefix character for `backward-prefix-chars';
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1028 such characters are treated as whitespace when they occur
40205
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
1029 between expressions.
d13b14b50715 (modify-syntax-entry): Fix argument names (use CHAR instead of C) and usage.
Pavel Janík <Pavel@Janik.cz>
parents: 40103
diff changeset
1030 usage: (modify-syntax-entry CHAR NEWENTRY &optional SYNTAX-TABLE) */)
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1031 (c, newentry, syntax_table)
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1032 Lisp_Object c, newentry, syntax_table;
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1033 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
1034 CHECK_NUMBER (c);
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1035
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1036 if (NILP (syntax_table))
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1037 syntax_table = current_buffer->syntax_table;
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1038 else
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1039 check_syntax_table (syntax_table);
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1040
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
1041 SET_RAW_SYNTAX_ENTRY (syntax_table, XINT (c), Fstring_to_syntax (newentry));
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 return Qnil;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 /* Dump syntax table to buffer in human-readable format */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1047 DEFUN ("internal-describe-syntax-value", Finternal_describe_syntax_value,
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1048 Sinternal_describe_syntax_value, 1, 1, 0,
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1049 doc: /* Insert a description of the internal syntax description SYNTAX at point. */)
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1050 (syntax)
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1051 Lisp_Object syntax;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 register enum syntaxcode code;
29821
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
1054 char desc, start1, start2, end1, end2, prefix, comstyle, comnested;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 char str[2];
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1056 Lisp_Object first, match_lisp, value = syntax;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1058 if (NILP (value))
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1059 {
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1060 insert_string ("default");
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1061 return syntax;
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1062 }
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1063
17109
dfe4f98935c4 (describe_syntax): Handle the case that the argument
Kenichi Handa <handa@m17n.org>
parents: 17044
diff changeset
1064 if (CHAR_TABLE_P (value))
dfe4f98935c4 (describe_syntax): Handle the case that the argument
Kenichi Handa <handa@m17n.org>
parents: 17044
diff changeset
1065 {
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1066 insert_string ("deeper char-table ...");
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1067 return syntax;
17109
dfe4f98935c4 (describe_syntax): Handle the case that the argument
Kenichi Handa <handa@m17n.org>
parents: 17044
diff changeset
1068 }
dfe4f98935c4 (describe_syntax): Handle the case that the argument
Kenichi Handa <handa@m17n.org>
parents: 17044
diff changeset
1069
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1070 if (!CONSP (value))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 {
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1072 insert_string ("invalid");
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1073 return syntax;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075
25663
a5eaace0fa01 Use XCAR and XCDR instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 25659
diff changeset
1076 first = XCAR (value);
a5eaace0fa01 Use XCAR and XCDR instead of explicit member access.
Ken Raeburn <raeburn@raeburn.org>
parents: 25659
diff changeset
1077 match_lisp = XCDR (value);
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1078
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1079 if (!INTEGERP (first) || !(NILP (match_lisp) || INTEGERP (match_lisp)))
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1080 {
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1081 insert_string ("invalid");
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1082 return syntax;
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1083 }
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1084
18113
9f7fdb0f76f3 (Fsyntax_table_p, check_syntax_table): Use EQ.
Richard M. Stallman <rms@gnu.org>
parents: 18080
diff changeset
1085 code = (enum syntaxcode) (XINT (first) & 0377);
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1086 start1 = (XINT (first) >> 16) & 1;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1087 start2 = (XINT (first) >> 17) & 1;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1088 end1 = (XINT (first) >> 18) & 1;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1089 end2 = (XINT (first) >> 19) & 1;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1090 prefix = (XINT (first) >> 20) & 1;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1091 comstyle = (XINT (first) >> 21) & 1;
29821
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
1092 comnested = (XINT (first) >> 22) & 1;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 if ((int) code < 0 || (int) code >= (int) Smax)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 insert_string ("invalid");
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1097 return syntax;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 desc = syntax_code_spec[(int) code];
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 str[0] = desc, str[1] = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 insert (str, 1);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1104 if (NILP (match_lisp))
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1105 insert (" ", 1);
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1106 else
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1107 insert_char (XINT (match_lisp));
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 if (start1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 insert ("1", 1);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 if (start2)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 insert ("2", 1);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 if (end1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 insert ("3", 1);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 if (end2)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 insert ("4", 1);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 if (prefix)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 insert ("p", 1);
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
1121 if (comstyle)
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
1122 insert ("b", 1);
29821
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
1123 if (comnested)
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
1124 insert ("n", 1);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 insert_string ("\twhich means: ");
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127
10457
2ab3bd0288a9 Change all occurences of SWITCH_ENUM_BUG to use SWITCH_ENUM_CAST instead.
Karl Heuer <kwzh@gnu.org>
parents: 9863
diff changeset
1128 switch (SWITCH_ENUM_CAST (code))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130 case Swhitespace:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 insert_string ("whitespace"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 case Spunct:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 insert_string ("punctuation"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 case Sword:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 insert_string ("word"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 case Ssymbol:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 insert_string ("symbol"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 case Sopen:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 insert_string ("open"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 case Sclose:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 insert_string ("close"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 case Squote:
32508
d371f8c371bd (describe_syntax): Add code for comment and string fences.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32506
diff changeset
1143 insert_string ("prefix"); break;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 case Sstring:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 insert_string ("string"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 case Smath:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 insert_string ("math"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 case Sescape:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 insert_string ("escape"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 case Scharquote:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 insert_string ("charquote"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 case Scomment:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 insert_string ("comment"); break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 case Sendcomment:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 insert_string ("endcomment"); break;
32508
d371f8c371bd (describe_syntax): Add code for comment and string fences.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32506
diff changeset
1156 case Sinherit:
d371f8c371bd (describe_syntax): Add code for comment and string fences.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32506
diff changeset
1157 insert_string ("inherit"); break;
d371f8c371bd (describe_syntax): Add code for comment and string fences.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32506
diff changeset
1158 case Scomment_fence:
d371f8c371bd (describe_syntax): Add code for comment and string fences.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32506
diff changeset
1159 insert_string ("comment fence"); break;
d371f8c371bd (describe_syntax): Add code for comment and string fences.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32506
diff changeset
1160 case Sstring_fence:
d371f8c371bd (describe_syntax): Add code for comment and string fences.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32506
diff changeset
1161 insert_string ("string fence"); break;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 default:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 insert_string ("invalid");
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1164 return syntax;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1167 if (!NILP (match_lisp))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 insert_string (", matches ");
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1170 insert_char (XINT (match_lisp));
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 if (start1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 insert_string (",\n\t is the first character of a comment-start sequence");
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 if (start2)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 insert_string (",\n\t is the second character of a comment-start sequence");
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 if (end1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 insert_string (",\n\t is the first character of a comment-end sequence");
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 if (end2)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 insert_string (",\n\t is the second character of a comment-end sequence");
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
1182 if (comstyle)
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
1183 insert_string (" (comment style b)");
29821
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
1184 if (comnested)
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
1185 insert_string (" (nestable)");
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
1186
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 if (prefix)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 insert_string (",\n\t is a prefix character for `backward-prefix-chars'");
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1190 return syntax;
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
1191 }
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1193 int parse_sexp_ignore_comments;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1194
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 /* Return the position across COUNT words from FROM.
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 If that many words cannot be found before the end of the buffer, return 0.
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 COUNT negative means scan backward and stop at word beginning. */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21207
diff changeset
1199 int
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 scan_words (from, count)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 register int from, count;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 register int beg = BEGV;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 register int end = ZV;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1205 register int from_byte = CHAR_TO_BYTE (from);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1206 register enum syntaxcode code;
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1207 int ch0, ch1;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 immediate_quit = 1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 QUIT;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1212 SETUP_SYNTAX_TABLE (from, count);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1213
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 while (count > 0)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 while (1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 if (from == end)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 immediate_quit = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 return 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1223 UPDATE_SYNTAX_TABLE_FORWARD (from);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1224 ch0 = FETCH_CHAR (from_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1225 code = SYNTAX (ch0);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1226 INC_BOTH (from, from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 if (words_include_escapes
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 && (code == Sescape || code == Scharquote))
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 if (code == Sword)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 }
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1233 /* Now CH0 is a character which begins a word and FROM is the
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1234 position of the next character. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 while (1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 if (from == end) break;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1238 UPDATE_SYNTAX_TABLE_FORWARD (from);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1239 ch1 = FETCH_CHAR (from_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1240 code = SYNTAX (ch1);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 if (!(words_include_escapes
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 && (code == Sescape || code == Scharquote)))
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1243 if (code != Sword || WORD_BOUNDARY_P (ch0, ch1))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 break;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1245 INC_BOTH (from, from_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1246 ch0 = ch1;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 count--;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 while (count < 0)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 while (1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 if (from == beg)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 immediate_quit = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 return 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 }
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1259 DEC_BOTH (from, from_byte);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1260 UPDATE_SYNTAX_TABLE_BACKWARD (from);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1261 ch1 = FETCH_CHAR (from_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1262 code = SYNTAX (ch1);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 if (words_include_escapes
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 && (code == Sescape || code == Scharquote))
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 if (code == Sword)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 }
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1269 /* Now CH1 is a character which ends a word and FROM is the
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1270 position of it. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271 while (1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 {
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1273 int temp_byte;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1274
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1275 if (from == beg)
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1276 break;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1277 temp_byte = dec_bytepos (from_byte);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1278 UPDATE_SYNTAX_TABLE_BACKWARD (from);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1279 ch0 = FETCH_CHAR (temp_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1280 code = SYNTAX (ch0);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 if (!(words_include_escapes
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 && (code == Sescape || code == Scharquote)))
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1283 if (code != Sword || WORD_BOUNDARY_P (ch0, ch1))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 break;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1285 DEC_BOTH (from, from_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
1286 ch1 = ch0;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288 count++;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 immediate_quit = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293 return from;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295
52213
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1296 DEFUN ("forward-word", Fforward_word, Sforward_word, 0, 1, "p",
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1297 doc: /* Move point forward ARG words (backward if ARG is negative).
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1298 Normally returns t.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1299 If an edge of the buffer or a field boundary is reached, point is left there
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1300 and the function returns nil. Field boundaries are not noticed if
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1301 `inhibit-field-text-motion' is non-nil. */)
52213
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1302 (arg)
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1303 Lisp_Object arg;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 {
58897
98e94b29b59b (Fforward_word): Avoid non-idempotent side-effects in macro arguments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57756
diff changeset
1305 Lisp_Object tmp;
26391
216416ad34fe (Fforward_word): Handle fields even if would have hit
Richard M. Stallman <rms@gnu.org>
parents: 26272
diff changeset
1306 int orig_val, val;
52213
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1307
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1308 if (NILP (arg))
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1309 XSETFASTINT (arg, 1);
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1310 else
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1311 CHECK_NUMBER (arg);
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1312
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1313 val = orig_val = scan_words (PT, XINT (arg));
26391
216416ad34fe (Fforward_word): Handle fields even if would have hit
Richard M. Stallman <rms@gnu.org>
parents: 26272
diff changeset
1314 if (! orig_val)
52213
d8341603541c (Fforward_word): Argument changed to optional. Set default value to 1.
Richard M. Stallman <rms@gnu.org>
parents: 51036
diff changeset
1315 val = XINT (arg) > 0 ? ZV : BEGV;
25401
3f78f1fed4e0 (Fforward_word): If in a mini-buffer and moving
Gerd Moellmann <gerd@gnu.org>
parents: 25290
diff changeset
1316
26060
6edf64bf5e22 (Fforward_word): Supply new ESCAPE_FROM_EDGE parameter
Gerd Moellmann <gerd@gnu.org>
parents: 25771
diff changeset
1317 /* Avoid jumping out of an input field. */
58897
98e94b29b59b (Fforward_word): Avoid non-idempotent side-effects in macro arguments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57756
diff changeset
1318 tmp = Fconstrain_to_field (make_number (val), make_number (PT),
98e94b29b59b (Fforward_word): Avoid non-idempotent side-effects in macro arguments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57756
diff changeset
1319 Qt, Qnil, Qnil);
98e94b29b59b (Fforward_word): Avoid non-idempotent side-effects in macro arguments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57756
diff changeset
1320 val = XFASTINT (tmp);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
1321
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 SET_PT (val);
27079
638b309011d9 (Fforward_word): Notice field boundaries only if
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1323 return val == orig_val ? Qt : Qnil;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1326 Lisp_Object skip_chars ();
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1327
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1328 DEFUN ("skip-chars-forward", Fskip_chars_forward, Sskip_chars_forward, 1, 2, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1329 doc: /* Move point forward, stopping before a char not in STRING, or at pos LIM.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1330 STRING is like the inside of a `[...]' in a regular expression
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1331 except that `]' is never special and `\\' quotes `^', `-' or `\\'
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1332 (but not as the end of a range; quoting is never needed there).
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1333 Thus, with arg "a-zA-Z", this skips letters stopping before first nonletter.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1334 With arg "^a-zA-Z", skips nonletters stopping before first letter.
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1335 Char classes, e.g. `[:alpha:]', are supported.
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1336
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1337 Returns the distance traveled, either zero or positive. */)
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1338 (string, lim)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1339 Lisp_Object string, lim;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1340 {
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1341 return skip_chars (1, 0, string, lim, 1);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1342 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1343
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1344 DEFUN ("skip-chars-backward", Fskip_chars_backward, Sskip_chars_backward, 1, 2, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1345 doc: /* Move point backward, stopping after a char not in STRING, or at pos LIM.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1346 See `skip-chars-forward' for details.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1347 Returns the distance traveled, either zero or negative. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1348 (string, lim)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1349 Lisp_Object string, lim;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1350 {
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1351 return skip_chars (0, 0, string, lim, 1);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1352 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1353
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1354 DEFUN ("skip-syntax-forward", Fskip_syntax_forward, Sskip_syntax_forward, 1, 2, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1355 doc: /* Move point forward across chars in specified syntax classes.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1356 SYNTAX is a string of syntax code characters.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1357 Stop before a char whose syntax is not in SYNTAX, or at position LIM.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1358 If SYNTAX starts with ^, skip characters whose syntax is NOT in SYNTAX.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1359 This function returns the distance traveled, either zero or positive. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1360 (syntax, lim)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1361 Lisp_Object syntax, lim;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1362 {
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1363 return skip_chars (1, 1, syntax, lim, 0);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1364 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1365
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1366 DEFUN ("skip-syntax-backward", Fskip_syntax_backward, Sskip_syntax_backward, 1, 2, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1367 doc: /* Move point backward across chars in specified syntax classes.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1368 SYNTAX is a string of syntax code characters.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1369 Stop on reaching a char whose syntax is not in SYNTAX, or at position LIM.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1370 If SYNTAX starts with ^, skip characters whose syntax is NOT in SYNTAX.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1371 This function returns the distance traveled, either zero or negative. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1372 (syntax, lim)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1373 Lisp_Object syntax, lim;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1374 {
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1375 return skip_chars (0, 1, syntax, lim, 0);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1376 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1377
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1378 static Lisp_Object
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1379 skip_chars (forwardp, syntaxp, string, lim, handle_iso_classes)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1380 int forwardp, syntaxp;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1381 Lisp_Object string, lim;
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1382 int handle_iso_classes;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1383 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1384 register unsigned int c;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1385 unsigned char fastmap[0400];
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1386 /* If SYNTAXP is 0, STRING may contain multi-byte form of characters
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1387 of which codes don't fit in FASTMAP. In that case, set the
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1388 ranges of characters in CHAR_RANGES. */
20292
2befa7396e42 (skip_chars): Check type of `string' before using it.
Karl Heuer <kwzh@gnu.org>
parents: 18938
diff changeset
1389 int *char_ranges;
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1390 int n_char_ranges = 0;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1391 int negate = 0;
20626
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1392 register int i, i_byte;
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1393 int multibyte = !NILP (current_buffer->enable_multibyte_characters);
22486
a28020246db1 (skip_chars): Don't examine STRING before verifying that it is a string.
Richard M. Stallman <rms@gnu.org>
parents: 22432
diff changeset
1394 int string_multibyte;
a28020246db1 (skip_chars): Don't examine STRING before verifying that it is a string.
Richard M. Stallman <rms@gnu.org>
parents: 22432
diff changeset
1395 int size_byte;
46555
35e66a0949b8 (Fstring_to_syntax, skip_chars): Treat Lisp string
Ken Raeburn <raeburn@raeburn.org>
parents: 46370
diff changeset
1396 const unsigned char *str;
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1397 int len;
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1398 Lisp_Object iso_classes;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1399
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
1400 CHECK_STRING (string);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41598
diff changeset
1401 char_ranges = (int *) alloca (SCHARS (string) * (sizeof (int)) * 2);
22486
a28020246db1 (skip_chars): Don't examine STRING before verifying that it is a string.
Richard M. Stallman <rms@gnu.org>
parents: 22432
diff changeset
1402 string_multibyte = STRING_MULTIBYTE (string);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41598
diff changeset
1403 str = SDATA (string);
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41598
diff changeset
1404 size_byte = SBYTES (string);
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1405 iso_classes = Qnil;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1406
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1407 /* Adjust the multibyteness of the string to that of the buffer. */
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1408 if (multibyte != string_multibyte)
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1409 {
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1410 int nbytes;
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1411
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1412 if (multibyte)
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41598
diff changeset
1413 nbytes = count_size_as_multibyte (SDATA (string),
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41598
diff changeset
1414 SCHARS (string));
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1415 else
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41598
diff changeset
1416 nbytes = SCHARS (string);
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1417 if (nbytes != size_byte)
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1418 {
46555
35e66a0949b8 (Fstring_to_syntax, skip_chars): Treat Lisp string
Ken Raeburn <raeburn@raeburn.org>
parents: 46370
diff changeset
1419 unsigned char *tmp = (unsigned char *) alloca (nbytes);
35e66a0949b8 (Fstring_to_syntax, skip_chars): Treat Lisp string
Ken Raeburn <raeburn@raeburn.org>
parents: 46370
diff changeset
1420 copy_text (SDATA (string), tmp, size_byte,
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1421 string_multibyte, multibyte);
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1422 size_byte = nbytes;
46555
35e66a0949b8 (Fstring_to_syntax, skip_chars): Treat Lisp string
Ken Raeburn <raeburn@raeburn.org>
parents: 46370
diff changeset
1423 str = tmp;
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1424 }
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1425 }
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1426
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1427 if (NILP (lim))
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1428 XSETINT (lim, forwardp ? ZV : BEGV);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1429 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
1430 CHECK_NUMBER_COERCE_MARKER (lim);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1431
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1432 /* In any case, don't allow scan outside bounds of buffer. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1433 if (XINT (lim) > ZV)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1434 XSETFASTINT (lim, ZV);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1435 if (XINT (lim) < BEGV)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1436 XSETFASTINT (lim, BEGV);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1437
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1438 bzero (fastmap, sizeof fastmap);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1439
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1440 i_byte = 0;
20626
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1441
22130
b25abff012fd (skip_chars): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 22116
diff changeset
1442 if (i_byte < size_byte
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 41598
diff changeset
1443 && SREF (string, 0) == '^')
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1444 {
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1445 negate = 1; i_byte++;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1446 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1447
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1448 /* Find the characters specified and set their elements of fastmap.
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1449 If syntaxp, each character counts as itself.
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1450 Otherwise, handle backslashes and ranges specially. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1451
22130
b25abff012fd (skip_chars): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 22116
diff changeset
1452 while (i_byte < size_byte)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1453 {
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1454 c = STRING_CHAR_AND_LENGTH (str + i_byte, size_byte - i_byte, len);
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1455 i_byte += len;
20626
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1456
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1457 if (syntaxp)
20626
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1458 fastmap[syntax_spec_code[c & 0377]] = 1;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1459 else
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1460 {
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1461 if (handle_iso_classes && c == '['
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1462 && i_byte < size_byte
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1463 && STRING_CHAR (str + i_byte, size_byte - i_byte) == ':')
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1464 {
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1465 const unsigned char *class_beg = str + i_byte + 1;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1466 const unsigned char *class_end = class_beg;
56116
6725db0f57d5 (skip_chars): Only recognize [:class:] when it has the
Kim F. Storm <storm@cua.dk>
parents: 56088
diff changeset
1467 const unsigned char *class_limit = str + size_byte - 2;
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1468 /* Leave room for the null. */
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1469 unsigned char class_name[CHAR_CLASS_MAX_LENGTH + 1];
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1470 re_wctype_t cc;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1471
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1472 if (class_limit - class_beg > CHAR_CLASS_MAX_LENGTH)
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1473 class_limit = class_beg + CHAR_CLASS_MAX_LENGTH;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1474
56116
6725db0f57d5 (skip_chars): Only recognize [:class:] when it has the
Kim F. Storm <storm@cua.dk>
parents: 56088
diff changeset
1475 while (class_end < class_limit
6725db0f57d5 (skip_chars): Only recognize [:class:] when it has the
Kim F. Storm <storm@cua.dk>
parents: 56088
diff changeset
1476 && *class_end >= 'a' && *class_end <= 'z')
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1477 class_end++;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1478
56116
6725db0f57d5 (skip_chars): Only recognize [:class:] when it has the
Kim F. Storm <storm@cua.dk>
parents: 56088
diff changeset
1479 if (class_end == class_beg
6725db0f57d5 (skip_chars): Only recognize [:class:] when it has the
Kim F. Storm <storm@cua.dk>
parents: 56088
diff changeset
1480 || *class_end != ':' || class_end[1] != ']')
6725db0f57d5 (skip_chars): Only recognize [:class:] when it has the
Kim F. Storm <storm@cua.dk>
parents: 56088
diff changeset
1481 goto not_a_class_name;
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1482
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1483 bcopy (class_beg, class_name, class_end - class_beg);
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1484 class_name[class_end - class_beg] = 0;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1485
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1486 cc = re_wctype (class_name);
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1487 if (cc == 0)
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1488 error ("Invalid ISO C character class");
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1489
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1490 iso_classes = Fcons (make_number (cc), iso_classes);
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1491
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1492 i_byte = class_end + 2 - str;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1493 continue;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1494 }
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1495
56116
6725db0f57d5 (skip_chars): Only recognize [:class:] when it has the
Kim F. Storm <storm@cua.dk>
parents: 56088
diff changeset
1496 not_a_class_name:
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1497 if (c == '\\')
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1498 {
22130
b25abff012fd (skip_chars): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 22116
diff changeset
1499 if (i_byte == size_byte)
20626
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1500 break;
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1501
53508
c7553b3b3a60 (skip_chars): Treat '-' at end of string as ordinary
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
1502 c = STRING_CHAR_AND_LENGTH (str + i_byte,
c7553b3b3a60 (skip_chars): Treat '-' at end of string as ordinary
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
1503 size_byte - i_byte, len);
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1504 i_byte += len;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1505 }
53508
c7553b3b3a60 (skip_chars): Treat '-' at end of string as ordinary
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
1506 /* Treat `-' as range character only if another character
c7553b3b3a60 (skip_chars): Treat '-' at end of string as ordinary
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
1507 follows. */
c7553b3b3a60 (skip_chars): Treat '-' at end of string as ordinary
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
1508 if (i_byte + 1 < size_byte
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1509 && str[i_byte] == '-')
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1510 {
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1511 unsigned int c2;
20626
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1512
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1513 /* Skip over the dash. */
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1514 i_byte++;
20626
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1515
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1516 /* Get the end of the range. */
53508
c7553b3b3a60 (skip_chars): Treat '-' at end of string as ordinary
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
1517 c2 = STRING_CHAR_AND_LENGTH (str + i_byte,
c7553b3b3a60 (skip_chars): Treat '-' at end of string as ordinary
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
1518 size_byte - i_byte, len);
30596
48a9e9f4fd9d (skip_chars): Fix handling of multibyte<->unibyte conversion.
Kenichi Handa <handa@m17n.org>
parents: 30594
diff changeset
1519 i_byte += len;
20626
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1520
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1521 if (SINGLE_BYTE_CHAR_P (c))
22116
09efd6a94b4b (skip_chars): Fix bug in handling a range which
Kenichi Handa <handa@m17n.org>
parents: 22052
diff changeset
1522 {
09efd6a94b4b (skip_chars): Fix bug in handling a range which
Kenichi Handa <handa@m17n.org>
parents: 22052
diff changeset
1523 if (! SINGLE_BYTE_CHAR_P (c2))
30626
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1524 {
32794
0fbf137d9f40 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 32508
diff changeset
1525 /* Handle a range starting with a character of
0fbf137d9f40 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 32508
diff changeset
1526 less than 256, and ending with a character of
0fbf137d9f40 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 32508
diff changeset
1527 not less than 256. Split that into two
0fbf137d9f40 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 32508
diff changeset
1528 ranges, the low one ending at 0377, and the
0fbf137d9f40 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 32508
diff changeset
1529 high one starting at the smallest character
0fbf137d9f40 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 32508
diff changeset
1530 in the charset of C2 and ending at C2. */
30626
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1531 int charset = CHAR_CHARSET (c2);
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1532 int c1 = MAKE_CHAR (charset, 0, 0);
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1533
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1534 char_ranges[n_char_ranges++] = c1;
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1535 char_ranges[n_char_ranges++] = c2;
32399
3819d0d851cb (skip_chars): Change the way of handling a range from unibyte char to
Kenichi Handa <handa@m17n.org>
parents: 32087
diff changeset
1536 c2 = 0377;
30626
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1537 }
22116
09efd6a94b4b (skip_chars): Fix bug in handling a range which
Kenichi Handa <handa@m17n.org>
parents: 22052
diff changeset
1538 while (c <= c2)
09efd6a94b4b (skip_chars): Fix bug in handling a range which
Kenichi Handa <handa@m17n.org>
parents: 22052
diff changeset
1539 {
09efd6a94b4b (skip_chars): Fix bug in handling a range which
Kenichi Handa <handa@m17n.org>
parents: 22052
diff changeset
1540 fastmap[c] = 1;
09efd6a94b4b (skip_chars): Fix bug in handling a range which
Kenichi Handa <handa@m17n.org>
parents: 22052
diff changeset
1541 c++;
09efd6a94b4b (skip_chars): Fix bug in handling a range which
Kenichi Handa <handa@m17n.org>
parents: 22052
diff changeset
1542 }
09efd6a94b4b (skip_chars): Fix bug in handling a range which
Kenichi Handa <handa@m17n.org>
parents: 22052
diff changeset
1543 }
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1544 else if (c <= c2) /* Both C and C2 are multibyte char. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1545 {
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1546 char_ranges[n_char_ranges++] = c;
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1547 char_ranges[n_char_ranges++] = c2;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1548 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1549 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1550 else
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1551 {
30626
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1552 if (SINGLE_BYTE_CHAR_P (c))
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1553 fastmap[c] = 1;
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1554 else
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1555 {
20626
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1556 char_ranges[n_char_ranges++] = c;
a39bcf9c0e1e (skip_chars): Handle multibyte and unibyte strings
Richard M. Stallman <rms@gnu.org>
parents: 20546
diff changeset
1557 char_ranges[n_char_ranges++] = c;
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1558 }
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1559 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1560 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1561 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1562
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1563 /* If ^ was the first character, complement the fastmap. */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1564 if (negate)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1565 for (i = 0; i < sizeof fastmap; i++)
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1566 fastmap[i] ^= 1;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1567
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1568 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1569 int start_point = PT;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1570 int pos = PT;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1571 int pos_byte = PT_BYTE;
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1572 unsigned char *p = PT_ADDR, *endp, *stop;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1573
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1574 if (forwardp)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1575 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1576 endp = (XINT (lim) == GPT) ? GPT_ADDR : CHAR_POS_ADDR (XINT (lim));
55423
a9e10b866486 (Fmodify_syntax_entry): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 54849
diff changeset
1577 stop = (pos < GPT && GPT < XINT (lim)) ? GPT_ADDR : endp;
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1578 }
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1579 else
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1580 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1581 endp = CHAR_POS_ADDR (XINT (lim));
55423
a9e10b866486 (Fmodify_syntax_entry): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 54849
diff changeset
1582 stop = (pos >= GPT && GPT > XINT (lim)) ? GAP_END_ADDR : endp;
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1583 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1584
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1585 immediate_quit = 1;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1586 if (syntaxp)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1587 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1588 SETUP_SYNTAX_TABLE (pos, forwardp ? 1 : -1);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1589 if (forwardp)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1590 {
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1591 if (multibyte)
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1592 while (1)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1593 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1594 int nbytes;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1595
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1596 if (p >= stop)
20956
15d1b7bf1cd7 (update_syntax_table): Fix calculations using offset.
Karl Heuer <kwzh@gnu.org>
parents: 20905
diff changeset
1597 {
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1598 if (p >= endp)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1599 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1600 p = GAP_END_ADDR;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1601 stop = endp;
20956
15d1b7bf1cd7 (update_syntax_table): Fix calculations using offset.
Karl Heuer <kwzh@gnu.org>
parents: 20905
diff changeset
1602 }
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1603 c = STRING_CHAR_AND_LENGTH (p, MAX_MULTIBYTE_LENGTH, nbytes);
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1604 if (! fastmap[(int) SYNTAX (c)])
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1605 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1606 p += nbytes, pos++, pos_byte += nbytes;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1607 UPDATE_SYNTAX_TABLE_FORWARD (pos);
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1608 }
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1609 else
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1610 while (1)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1611 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1612 if (p >= stop)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1613 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1614 if (p >= endp)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1615 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1616 p = GAP_END_ADDR;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1617 stop = endp;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1618 }
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1619 if (! fastmap[(int) SYNTAX (*p)])
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1620 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1621 p++, pos++;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1622 UPDATE_SYNTAX_TABLE_FORWARD (pos);
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1623 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1624 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1625 else
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1626 {
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1627 if (multibyte)
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1628 while (1)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1629 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1630 unsigned char *prev_p;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1631 int nbytes;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1632
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1633 if (p <= stop)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1634 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1635 if (p <= endp)
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1636 break;
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1637 p = GPT_ADDR;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1638 stop = endp;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1639 }
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1640 prev_p = p;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1641 while (--p >= stop && ! CHAR_HEAD_P (*p));
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1642 PARSE_MULTIBYTE_SEQ (p, MAX_MULTIBYTE_LENGTH, nbytes);
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1643 if (prev_p - p > nbytes)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1644 p = prev_p - 1, c = *p, nbytes = 1;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1645 else
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1646 c = STRING_CHAR (p, MAX_MULTIBYTE_LENGTH);
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1647 pos--, pos_byte -= nbytes;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1648 UPDATE_SYNTAX_TABLE_BACKWARD (pos);
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1649 if (! fastmap[(int) SYNTAX (c)])
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1650 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1651 pos++;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1652 pos_byte += nbytes;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1653 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1654 }
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1655 }
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1656 else
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1657 while (1)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1658 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1659 if (p <= stop)
20956
15d1b7bf1cd7 (update_syntax_table): Fix calculations using offset.
Karl Heuer <kwzh@gnu.org>
parents: 20905
diff changeset
1660 {
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1661 if (p <= endp)
17585
aefc22e52046 (skip_chars): Fix previous change in syntax/backward case.
Richard M. Stallman <rms@gnu.org>
parents: 17564
diff changeset
1662 break;
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1663 p = GPT_ADDR;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1664 stop = endp;
20956
15d1b7bf1cd7 (update_syntax_table): Fix calculations using offset.
Karl Heuer <kwzh@gnu.org>
parents: 20905
diff changeset
1665 }
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1666 if (! fastmap[(int) SYNTAX (p[-1])])
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1667 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1668 p--, pos--;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1669 UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1670 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1671 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1672 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1673 else
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1674 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1675 if (forwardp)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1676 {
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1677 if (multibyte)
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1678 while (1)
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1679 {
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1680 int nbytes;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1681
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1682 if (p >= stop)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1683 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1684 if (p >= endp)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1685 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1686 p = GAP_END_ADDR;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1687 stop = endp;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1688 }
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1689 c = STRING_CHAR_AND_LENGTH (p, MAX_MULTIBYTE_LENGTH, nbytes);
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1690
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1691 if (! NILP (iso_classes) && in_classes (c, iso_classes))
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1692 {
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1693 if (negate)
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1694 break;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1695 else
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1696 goto fwd_ok;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1697 }
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1698
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1699 if (SINGLE_BYTE_CHAR_P (c))
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1700 {
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1701 if (!fastmap[c])
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1702 break;
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1703 }
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1704 else
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1705 {
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1706 /* If we are looking at a multibyte character,
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1707 we must look up the character in the table
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1708 CHAR_RANGES. If there's no data in the
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1709 table, that character is not what we want to
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1710 skip. */
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1711
30626
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1712 /* The following code do the right thing even if
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1713 n_char_ranges is zero (i.e. no data in
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1714 CHAR_RANGES). */
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1715 for (i = 0; i < n_char_ranges; i += 2)
30626
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1716 if (c >= char_ranges[i] && c <= char_ranges[i + 1])
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1717 break;
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1718 if (!(negate ^ (i < n_char_ranges)))
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1719 break;
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1720 }
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1721 fwd_ok:
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1722 p += nbytes, pos++, pos_byte += nbytes;
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1723 }
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1724 else
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1725 while (1)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1726 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1727 if (p >= stop)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1728 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1729 if (p >= endp)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1730 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1731 p = GAP_END_ADDR;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1732 stop = endp;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1733 }
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1734
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1735 if (!NILP (iso_classes) && in_classes (*p, iso_classes))
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1736 {
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1737 if (negate)
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1738 break;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1739 else
56724
2c932ff651d2 (skip_chars): Fix for unibyte case.
Kenichi Handa <handa@m17n.org>
parents: 56720
diff changeset
1740 goto fwd_unibyte_ok;
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1741 }
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1742
50697
019e87a60687 (skip_chars): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 50675
diff changeset
1743 if (!fastmap[*p])
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1744 break;
56724
2c932ff651d2 (skip_chars): Fix for unibyte case.
Kenichi Handa <handa@m17n.org>
parents: 56720
diff changeset
1745 fwd_unibyte_ok:
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1746 p++, pos++;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1747 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1748 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1749 else
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1750 {
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1751 if (multibyte)
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1752 while (1)
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1753 {
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1754 unsigned char *prev_p;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1755 int nbytes;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1756
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1757 if (p <= stop)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1758 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1759 if (p <= endp)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1760 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1761 p = GPT_ADDR;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1762 stop = endp;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1763 }
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1764 prev_p = p;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1765 while (--p >= stop && ! CHAR_HEAD_P (*p));
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1766 PARSE_MULTIBYTE_SEQ (p, MAX_MULTIBYTE_LENGTH, nbytes);
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1767 if (prev_p - p > nbytes)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1768 p = prev_p - 1, c = *p, nbytes = 1;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1769 else
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1770 c = STRING_CHAR (p, MAX_MULTIBYTE_LENGTH);
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1771
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1772 if (! NILP (iso_classes) && in_classes (c, iso_classes))
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1773 {
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1774 if (negate)
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1775 break;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1776 else
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1777 goto back_ok;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1778 }
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1779
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1780 if (SINGLE_BYTE_CHAR_P (c))
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1781 {
31944
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1782 if (!fastmap[c])
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1783 break;
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1784 }
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1785 else
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1786 {
05763e780521 (skip_chars): Handle negation correctly.
Kenichi Handa <handa@m17n.org>
parents: 31209
diff changeset
1787 /* See the comment in the previous similar code. */
30626
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1788 for (i = 0; i < n_char_ranges; i += 2)
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1789 if (c >= char_ranges[i] && c <= char_ranges[i + 1])
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1790 break;
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1791 if (!(negate ^ (i < n_char_ranges)))
9d47c133b357 * syntax.c (skip_chars): Fix previous change. Make the handling of
Kenichi Handa <handa@m17n.org>
parents: 30596
diff changeset
1792 break;
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1793 }
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1794 back_ok:
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1795 pos--, pos_byte -= nbytes;
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1796 }
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1797 else
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1798 while (1)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1799 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1800 if (p <= stop)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1801 {
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1802 if (p <= endp)
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1803 break;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1804 p = GPT_ADDR;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1805 stop = endp;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1806 }
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1807
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1808 if (! NILP (iso_classes) && in_classes (p[-1], iso_classes))
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1809 {
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1810 if (negate)
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1811 break;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1812 else
56724
2c932ff651d2 (skip_chars): Fix for unibyte case.
Kenichi Handa <handa@m17n.org>
parents: 56720
diff changeset
1813 goto back_unibyte_ok;
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1814 }
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1815
50697
019e87a60687 (skip_chars): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents: 50675
diff changeset
1816 if (!fastmap[p[-1]])
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1817 break;
56724
2c932ff651d2 (skip_chars): Fix for unibyte case.
Kenichi Handa <handa@m17n.org>
parents: 56720
diff changeset
1818 back_unibyte_ok:
50675
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1819 p--, pos--;
96dc22fa49d3 (skip_chars): Make the code faster by using the common
Kenichi Handa <handa@m17n.org>
parents: 49971
diff changeset
1820 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1821 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1822 }
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1823
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1824 #if 0 /* Not needed now that a position in mid-character
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1825 cannot be specified in Lisp. */
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1826 if (multibyte
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1827 /* INC_POS or DEC_POS might have moved POS over LIM. */
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1828 && (forwardp ? (pos > XINT (lim)) : (pos < XINT (lim))))
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1829 pos = XINT (lim);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1830 #endif
17564
050f15e0b948 (skip_chars): Merge mule changes back in.
Richard M. Stallman <rms@gnu.org>
parents: 17466
diff changeset
1831
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1832 if (! multibyte)
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1833 pos_byte = pos;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1834
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
1835 SET_PT_BOTH (pos, pos_byte);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1836 immediate_quit = 0;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1837
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1838 return make_number (PT - start_point);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1839 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1840 }
56088
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1841
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1842 /* Return 1 if character C belongs to one of the ISO classes
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1843 in the list ISO_CLASSES. Each class is represented by an
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1844 integer which is its type according to re_wctype. */
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1845
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1846 static int
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1847 in_classes (c, iso_classes)
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1848 int c;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1849 Lisp_Object iso_classes;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1850 {
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1851 int fits_class = 0;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1852
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1853 while (! NILP (iso_classes))
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1854 {
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1855 Lisp_Object elt;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1856 elt = XCAR (iso_classes);
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1857 iso_classes = XCDR (iso_classes);
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1858
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1859 if (re_iswctype (c, XFASTINT (elt)))
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1860 fits_class = 1;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1861 }
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1862
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1863 return fits_class;
a7a676c680d4 Include regex.h.
Richard M. Stallman <rms@gnu.org>
parents: 56067
diff changeset
1864 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
1865
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1866 /* Jump over a comment, assuming we are at the beginning of one.
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1867 FROM is the current position.
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1868 FROM_BYTE is the bytepos corresponding to FROM.
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1869 Do not move past STOP (a charpos).
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1870 The comment over which we have to jump is of style STYLE
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1871 (either SYNTAX_COMMENT_STYLE(foo) or ST_COMMENT_STYLE).
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1872 NESTING should be positive to indicate the nesting at the beginning
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1873 for nested comments and should be zero or negative else.
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1874 ST_COMMENT_STYLE cannot be nested.
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1875 PREV_SYNTAX is the SYNTAX_WITH_FLAGS of the previous character
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1876 (or 0 If the search cannot start in the middle of a two-character).
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1877
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1878 If successful, return 1 and store the charpos of the comment's end
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1879 into *CHARPOS_PTR and the corresponding bytepos into *BYTEPOS_PTR.
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1880 Else, return 0 and store the charpos STOP into *CHARPOS_PTR, the
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1881 corresponding bytepos into *BYTEPOS_PTR and the current nesting
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1882 (as defined for state.incomment) in *INCOMMENT_PTR.
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1883
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1884 The comment end is the last character of the comment rather than the
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1885 character just after the comment.
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1886
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1887 Global syntax data is assumed to initially be valid for FROM and
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1888 remains valid for forward search starting at the returned position. */
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1889
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1890 static int
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1891 forw_comment (from, from_byte, stop, nesting, style, prev_syntax,
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1892 charpos_ptr, bytepos_ptr, incomment_ptr)
71787
7e302766894f (forw_comment): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71740
diff changeset
1893 EMACS_INT from, from_byte, stop;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1894 int nesting, style, prev_syntax;
71787
7e302766894f (forw_comment): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71740
diff changeset
1895 EMACS_INT *charpos_ptr, *bytepos_ptr;
7e302766894f (forw_comment): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71740
diff changeset
1896 int *incomment_ptr;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1897 {
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1898 register int c, c1;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1899 register enum syntaxcode code;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1900 register int syntax;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1901
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1902 if (nesting <= 0) nesting = -1;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1903
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1904 /* Enter the loop in the middle so that we find
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1905 a 2-char comment ender if we start in the middle of it. */
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1906 syntax = prev_syntax;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1907 if (syntax != 0) goto forw_incomment;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1908
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1909 while (1)
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1910 {
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1911 if (from == stop)
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1912 {
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1913 *incomment_ptr = nesting;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1914 *charpos_ptr = from;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1915 *bytepos_ptr = from_byte;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1916 return 0;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1917 }
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1918 c = FETCH_CHAR (from_byte);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1919 syntax = SYNTAX_WITH_FLAGS (c);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1920 code = syntax & 0xff;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1921 if (code == Sendcomment
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1922 && SYNTAX_FLAGS_COMMENT_STYLE (syntax) == style
32086
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
1923 && (SYNTAX_FLAGS_COMMENT_NESTED (syntax) ?
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
1924 (nesting > 0 && --nesting == 0) : nesting < 0))
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1925 /* we have encountered a comment end of the same style
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1926 as the comment sequence which began this comment
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1927 section */
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1928 break;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1929 if (code == Scomment_fence
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1930 && style == ST_COMMENT_STYLE)
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1931 /* we have encountered a comment end of the same style
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1932 as the comment sequence which began this comment
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1933 section. */
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1934 break;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1935 if (nesting > 0
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1936 && code == Scomment
32086
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
1937 && SYNTAX_FLAGS_COMMENT_NESTED (syntax)
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1938 && SYNTAX_FLAGS_COMMENT_STYLE (syntax) == style)
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1939 /* we have encountered a nested comment of the same style
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1940 as the comment sequence which began this comment section */
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1941 nesting++;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1942 INC_BOTH (from, from_byte);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1943 UPDATE_SYNTAX_TABLE_FORWARD (from);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
1944
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1945 forw_incomment:
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1946 if (from < stop && SYNTAX_FLAGS_COMEND_FIRST (syntax)
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1947 && SYNTAX_FLAGS_COMMENT_STYLE (syntax) == style
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1948 && (c1 = FETCH_CHAR (from_byte),
32086
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
1949 SYNTAX_COMEND_SECOND (c1))
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
1950 && ((SYNTAX_FLAGS_COMMENT_NESTED (syntax) ||
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
1951 SYNTAX_COMMENT_NESTED (c1)) ? nesting > 0 : nesting < 0))
25771
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1952 {
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1953 if (--nesting <= 0)
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1954 /* we have encountered a comment end of the same style
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1955 as the comment sequence which began this comment
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1956 section */
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1957 break;
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1958 else
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1959 {
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1960 INC_BOTH (from, from_byte);
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1961 UPDATE_SYNTAX_TABLE_FORWARD (from);
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1962 }
21925339c7d2 (update_syntax_table, find_defun_start, back_comment,
Gerd Moellmann <gerd@gnu.org>
parents: 25663
diff changeset
1963 }
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1964 if (nesting > 0
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1965 && from < stop
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1966 && SYNTAX_FLAGS_COMSTART_FIRST (syntax)
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1967 && (c1 = FETCH_CHAR (from_byte),
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1968 SYNTAX_COMMENT_STYLE (c1) == style
32086
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
1969 && SYNTAX_COMSTART_SECOND (c1))
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
1970 && (SYNTAX_FLAGS_COMMENT_NESTED (syntax) ||
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
1971 SYNTAX_COMMENT_NESTED (c1)))
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1972 /* we have encountered a nested comment of the same style
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1973 as the comment sequence which began this comment
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1974 section */
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1975 {
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1976 INC_BOTH (from, from_byte);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1977 UPDATE_SYNTAX_TABLE_FORWARD (from);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1978 nesting++;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1979 }
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1980 }
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1981 *charpos_ptr = from;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1982 *bytepos_ptr = from_byte;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1983 return 1;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1984 }
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
1985
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
1986 DEFUN ("forward-comment", Fforward_comment, Sforward_comment, 1, 1, 0,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49551
diff changeset
1987 doc: /*
48089
8bd7557b4421 (Fforward_comment): Doc fix.
Dave Love <fx@gnu.org>
parents: 47942
diff changeset
1988 Move forward across up to COUNT comments. If COUNT is negative, move backward.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1989 Stop scanning if we find something other than a comment or whitespace.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1990 Set point to where scanning stops.
48089
8bd7557b4421 (Fforward_comment): Doc fix.
Dave Love <fx@gnu.org>
parents: 47942
diff changeset
1991 If COUNT comments are found as expected, with nothing except whitespace
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1992 between them, return t; otherwise return nil. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
1993 (count)
3095
ef7d99920f81 (Fforward_comment): Arg is a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 3087
diff changeset
1994 Lisp_Object count;
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
1995 {
71739
a5eb5d8b1eca (Fforward_comment): Revert the reversion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71734
diff changeset
1996 register EMACS_INT from;
a5eb5d8b1eca (Fforward_comment): Revert the reversion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71734
diff changeset
1997 EMACS_INT from_byte;
a5eb5d8b1eca (Fforward_comment): Revert the reversion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71734
diff changeset
1998 register EMACS_INT stop;
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
1999 register int c, c1;
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2000 register enum syntaxcode code;
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2001 int comstyle = 0; /* style of comment encountered */
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2002 int comnested = 0; /* whether the comment is nestable or not */
3087
ea0cb469490e (Fforward_comment): Fix last change.
Richard M. Stallman <rms@gnu.org>
parents: 3086
diff changeset
2003 int found;
71739
a5eb5d8b1eca (Fforward_comment): Revert the reversion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71734
diff changeset
2004 EMACS_INT count1;
a5eb5d8b1eca (Fforward_comment): Revert the reversion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71734
diff changeset
2005 EMACS_INT out_charpos, out_bytepos;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2006 int dummy;
3095
ef7d99920f81 (Fforward_comment): Arg is a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 3087
diff changeset
2007
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
2008 CHECK_NUMBER (count);
3095
ef7d99920f81 (Fforward_comment): Arg is a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 3087
diff changeset
2009 count1 = XINT (count);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2010 stop = count1 > 0 ? ZV : BEGV;
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2011
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2012 immediate_quit = 1;
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2013 QUIT;
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2014
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2015 from = PT;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2016 from_byte = PT_BYTE;
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2017
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2018 SETUP_SYNTAX_TABLE (from, count1);
3095
ef7d99920f81 (Fforward_comment): Arg is a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 3087
diff changeset
2019 while (count1 > 0)
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2020 {
6142
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2021 do
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2022 {
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2023 int comstart_first;
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2024
6142
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2025 if (from == stop)
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2026 {
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2027 SET_PT_BOTH (from, from_byte);
10947
e805ef6b931c (Fforward_comment): Always clear immediate_quit for return.
Richard M. Stallman <rms@gnu.org>
parents: 10457
diff changeset
2028 immediate_quit = 0;
6142
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2029 return Qnil;
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2030 }
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2031 c = FETCH_CHAR (from_byte);
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2032 code = SYNTAX (c);
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2033 comstart_first = SYNTAX_COMSTART_FIRST (c);
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2034 comnested = SYNTAX_COMMENT_NESTED (c);
29821
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
2035 comstyle = SYNTAX_COMMENT_STYLE (c);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2036 INC_BOTH (from, from_byte);
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2037 UPDATE_SYNTAX_TABLE_FORWARD (from);
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2038 if (from < stop && comstart_first
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2039 && (c1 = FETCH_CHAR (from_byte),
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
2040 SYNTAX_COMSTART_SECOND (c1)))
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2041 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2042 /* We have encountered a comment start sequence and we
4953
7545290052bf (Fforward_comment): On backward scan, exit inner loop
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2043 are ignoring all text inside comments. We must record
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2044 the comment style this sequence begins so that later,
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2045 only a comment end of the same style actually ends
4953
7545290052bf (Fforward_comment): On backward scan, exit inner loop
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2046 the comment section. */
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2047 code = Scomment;
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
2048 comstyle = SYNTAX_COMMENT_STYLE (c1);
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2049 comnested = comnested || SYNTAX_COMMENT_NESTED (c1);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2050 INC_BOTH (from, from_byte);
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2051 UPDATE_SYNTAX_TABLE_FORWARD (from);
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2052 }
6142
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2053 }
32086
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2054 while (code == Swhitespace || (code == Sendcomment && c == '\n'));
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2055
25290
a80acb2a8273 (Fforward_comment): Set comstyle for Scomment_fence.
Karl Heuer <kwzh@gnu.org>
parents: 24728
diff changeset
2056 if (code == Scomment_fence)
a80acb2a8273 (Fforward_comment): Set comstyle for Scomment_fence.
Karl Heuer <kwzh@gnu.org>
parents: 24728
diff changeset
2057 comstyle = ST_COMMENT_STYLE;
a80acb2a8273 (Fforward_comment): Set comstyle for Scomment_fence.
Karl Heuer <kwzh@gnu.org>
parents: 24728
diff changeset
2058 else if (code != Scomment)
6142
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2059 {
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2060 immediate_quit = 0;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2061 DEC_BOTH (from, from_byte);
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2062 SET_PT_BOTH (from, from_byte);
6142
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2063 return Qnil;
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2064 }
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2065 /* We're at the start of a comment. */
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2066 found = forw_comment (from, from_byte, stop, comnested, comstyle, 0,
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2067 &out_charpos, &out_bytepos, &dummy);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2068 from = out_charpos; from_byte = out_bytepos;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2069 if (!found)
6142
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2070 {
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2071 immediate_quit = 0;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2072 SET_PT_BOTH (from, from_byte);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2073 return Qnil;
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2074 }
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2075 INC_BOTH (from, from_byte);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2076 UPDATE_SYNTAX_TABLE_FORWARD (from);
6142
2dbc79d01191 (Fforward_comment): Do the right thing at eob.
Karl Heuer <kwzh@gnu.org>
parents: 5755
diff changeset
2077 /* We have skipped one comment. */
3095
ef7d99920f81 (Fforward_comment): Arg is a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 3087
diff changeset
2078 count1--;
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2079 }
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2080
3095
ef7d99920f81 (Fforward_comment): Arg is a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 3087
diff changeset
2081 while (count1 < 0)
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2082 {
18938
444939f3c18f (Fforward_comment): When count1 is negative, return nil if FROM reaches STOP.
Richard M. Stallman <rms@gnu.org>
parents: 18738
diff changeset
2083 while (1)
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2084 {
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
2085 int quoted;
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2086
18938
444939f3c18f (Fforward_comment): When count1 is negative, return nil if FROM reaches STOP.
Richard M. Stallman <rms@gnu.org>
parents: 18738
diff changeset
2087 if (from <= stop)
444939f3c18f (Fforward_comment): When count1 is negative, return nil if FROM reaches STOP.
Richard M. Stallman <rms@gnu.org>
parents: 18738
diff changeset
2088 {
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2089 SET_PT_BOTH (BEGV, BEGV_BYTE);
18938
444939f3c18f (Fforward_comment): When count1 is negative, return nil if FROM reaches STOP.
Richard M. Stallman <rms@gnu.org>
parents: 18738
diff changeset
2090 immediate_quit = 0;
444939f3c18f (Fforward_comment): When count1 is negative, return nil if FROM reaches STOP.
Richard M. Stallman <rms@gnu.org>
parents: 18738
diff changeset
2091 return Qnil;
444939f3c18f (Fforward_comment): When count1 is negative, return nil if FROM reaches STOP.
Richard M. Stallman <rms@gnu.org>
parents: 18738
diff changeset
2092 }
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2093
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2094 DEC_BOTH (from, from_byte);
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2095 /* char_quoted does UPDATE_SYNTAX_TABLE_BACKWARD (from). */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2096 quoted = char_quoted (from, from_byte);
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2097 c = FETCH_CHAR (from_byte);
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2098 code = SYNTAX (c);
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2099 comstyle = 0;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2100 comnested = SYNTAX_COMMENT_NESTED (c);
4953
7545290052bf (Fforward_comment): On backward scan, exit inner loop
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2101 if (code == Sendcomment)
7545290052bf (Fforward_comment): On backward scan, exit inner loop
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2102 comstyle = SYNTAX_COMMENT_STYLE (c);
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2103 if (from > stop && SYNTAX_COMEND_SECOND (c)
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2104 && prev_char_comend_first (from, from_byte)
22432
ac339ec4a12a (Fforward_comment): Properly compute BYTEPOS arg to char_quoted.
Richard M. Stallman <rms@gnu.org>
parents: 22394
diff changeset
2105 && !char_quoted (from - 1, dec_bytepos (from_byte)))
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2106 {
4953
7545290052bf (Fforward_comment): On backward scan, exit inner loop
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2107 /* We must record the comment style encountered so that
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2108 later, we can match only the proper comment begin
4953
7545290052bf (Fforward_comment): On backward scan, exit inner loop
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2109 sequence of the same style. */
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2110 DEC_BOTH (from, from_byte);
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2111 code = Sendcomment;
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2112 /* Calling char_quoted, above, set up global syntax position
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2113 at the new value of FROM. */
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2114 c1 = FETCH_CHAR (from_byte);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2115 comstyle = SYNTAX_COMMENT_STYLE (c1);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2116 comnested = comnested || SYNTAX_COMMENT_NESTED (c1);
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2117 }
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2118
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2119 if (code == Scomment_fence)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2120 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2121 /* Skip until first preceding unquoted comment_fence. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2122 int found = 0, ini = from, ini_byte = from_byte;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2123
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2124 while (1)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2125 {
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2126 DEC_BOTH (from, from_byte);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2127 UPDATE_SYNTAX_TABLE_BACKWARD (from);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2128 c = FETCH_CHAR (from_byte);
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2129 if (SYNTAX (c) == Scomment_fence
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2130 && !char_quoted (from, from_byte))
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2131 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2132 found = 1;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2133 break;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2134 }
70317
48f9beb0cfdc (Fforward_comment): Detect generic comment at beginning of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 70291
diff changeset
2135 else if (from == stop)
48f9beb0cfdc (Fforward_comment): Detect generic comment at beginning of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 70291
diff changeset
2136 break;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2137 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2138 if (found == 0)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2139 {
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2140 from = ini; /* Set point to ini + 1. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2141 from_byte = ini_byte;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2142 goto leave;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2143 }
70291
e4dbfbc6b5c6 (Fforward_comment): Don't forget to break out of the loop
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68651
diff changeset
2144 else
e4dbfbc6b5c6 (Fforward_comment): Don't forget to break out of the loop
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68651
diff changeset
2145 /* We have skipped one comment. */
e4dbfbc6b5c6 (Fforward_comment): Don't forget to break out of the loop
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68651
diff changeset
2146 break;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2147 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2148 else if (code == Sendcomment)
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2149 {
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2150 found = back_comment (from, from_byte, stop, comnested, comstyle,
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2151 &out_charpos, &out_bytepos);
27698
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
2152 if (found == -1)
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
2153 {
32086
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2154 if (c == '\n')
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2155 /* This end-of-line is not an end-of-comment.
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2156 Treat it like a whitespace.
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2157 CC-mode (and maybe others) relies on this behavior. */
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2158 ;
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2159 else
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2160 {
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2161 /* Failure: we should go back to the end of this
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2162 not-quite-endcomment. */
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2163 if (SYNTAX(c) != code)
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2164 /* It was a two-char Sendcomment. */
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2165 INC_BOTH (from, from_byte);
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2166 goto leave;
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2167 }
27698
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
2168 }
27719
73926d5a4d9f (Fforward_comment): Undo the previous change, since cc-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27698
diff changeset
2169 else
32086
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2170 {
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2171 /* We have skipped one comment. */
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2172 from = out_charpos, from_byte = out_bytepos;
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2173 break;
73d18e25e303 (forw_comment): Match nestedness of ender/starter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31944
diff changeset
2174 }
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2175 }
39796
dcc6aae53ac8 (update_syntax_table): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39748
diff changeset
2176 else if (code != Swhitespace || quoted)
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2177 {
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2178 leave:
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2179 immediate_quit = 0;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2180 INC_BOTH (from, from_byte);
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2181 SET_PT_BOTH (from, from_byte);
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2182 return Qnil;
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2183 }
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2184 }
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2185
3095
ef7d99920f81 (Fforward_comment): Arg is a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 3087
diff changeset
2186 count1++;
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2187 }
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2188
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2189 SET_PT_BOTH (from, from_byte);
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2190 immediate_quit = 0;
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2191 return Qt;
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2192 }
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
2193
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2194 /* Return syntax code of character C if C is a single byte character
38047
46bbf160c47f Fixed a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 37532
diff changeset
2195 or `multibyte_symbol_p' is zero. Otherwise, return Ssymbol. */
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2196
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2197 #define SYNTAX_WITH_MULTIBYTE_CHECK(c) \
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2198 ((SINGLE_BYTE_CHAR_P (c) || !multibyte_symbol_p) \
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2199 ? SYNTAX (c) : Ssymbol)
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2200
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2201 static Lisp_Object
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2202 scan_lists (from, count, depth, sexpflag)
71740
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
2203 register EMACS_INT from;
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
2204 EMACS_INT count, depth;
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
2205 int sexpflag;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2206 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2207 Lisp_Object val;
71740
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
2208 register EMACS_INT stop = count > 0 ? ZV : BEGV;
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2209 register int c, c1;
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2210 int stringterm;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2211 int quoted;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2212 int mathexit = 0;
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2213 register enum syntaxcode code, temp_code;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2214 int min_depth = depth; /* Err out if depth gets less than this. */
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2215 int comstyle = 0; /* style of comment encountered */
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2216 int comnested = 0; /* whether the comment is nestable or not */
71740
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
2217 EMACS_INT temp_pos;
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
2218 EMACS_INT last_good = from;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2219 int found;
71740
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
2220 EMACS_INT from_byte;
df55df8eb062 (back_comment, scan_lists): Also use EMACS_INT for buffer positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71739
diff changeset
2221 EMACS_INT out_bytepos, out_charpos;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2222 int temp, dummy;
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2223 int multibyte_symbol_p = sexpflag && multibyte_syntax_as_symbol;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2224
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2225 if (depth > 0) min_depth = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2226
23404
529689c4a32c (scan_lists): Bring FROM back into range BEGV...ZV.
Richard M. Stallman <rms@gnu.org>
parents: 22994
diff changeset
2227 if (from > ZV) from = ZV;
529689c4a32c (scan_lists): Bring FROM back into range BEGV...ZV.
Richard M. Stallman <rms@gnu.org>
parents: 22994
diff changeset
2228 if (from < BEGV) from = BEGV;
529689c4a32c (scan_lists): Bring FROM back into range BEGV...ZV.
Richard M. Stallman <rms@gnu.org>
parents: 22994
diff changeset
2229
529689c4a32c (scan_lists): Bring FROM back into range BEGV...ZV.
Richard M. Stallman <rms@gnu.org>
parents: 22994
diff changeset
2230 from_byte = CHAR_TO_BYTE (from);
529689c4a32c (scan_lists): Bring FROM back into range BEGV...ZV.
Richard M. Stallman <rms@gnu.org>
parents: 22994
diff changeset
2231
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2232 immediate_quit = 1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2233 QUIT;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2234
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2235 SETUP_SYNTAX_TABLE (from, count);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2236 while (count > 0)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2237 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2238 while (from < stop)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2239 {
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2240 int comstart_first, prefix;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2241 UPDATE_SYNTAX_TABLE_FORWARD (from);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2242 c = FETCH_CHAR (from_byte);
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2243 code = SYNTAX_WITH_MULTIBYTE_CHECK (c);
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2244 comstart_first = SYNTAX_COMSTART_FIRST (c);
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2245 comnested = SYNTAX_COMMENT_NESTED (c);
29821
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
2246 comstyle = SYNTAX_COMMENT_STYLE (c);
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2247 prefix = SYNTAX_PREFIX (c);
16992
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
2248 if (depth == min_depth)
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
2249 last_good = from;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2250 INC_BOTH (from, from_byte);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2251 UPDATE_SYNTAX_TABLE_FORWARD (from);
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2252 if (from < stop && comstart_first
56067
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
2253 && (c = FETCH_CHAR (from_byte), SYNTAX_COMSTART_SECOND (c))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2254 && parse_sexp_ignore_comments)
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2255 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2256 /* we have encountered a comment start sequence and we
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2257 are ignoring all text inside comments. We must record
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2258 the comment style this sequence begins so that later,
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2259 only a comment end of the same style actually ends
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2260 the comment section */
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2261 code = Scomment;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2262 c1 = FETCH_CHAR (from_byte);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2263 comstyle = SYNTAX_COMMENT_STYLE (c1);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2264 comnested = comnested || SYNTAX_COMMENT_NESTED (c1);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2265 INC_BOTH (from, from_byte);
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2266 UPDATE_SYNTAX_TABLE_FORWARD (from);
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2267 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2268
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2269 if (prefix)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2270 continue;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2271
10457
2ab3bd0288a9 Change all occurences of SWITCH_ENUM_BUG to use SWITCH_ENUM_CAST instead.
Karl Heuer <kwzh@gnu.org>
parents: 9863
diff changeset
2272 switch (SWITCH_ENUM_CAST (code))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2273 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2274 case Sescape:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2275 case Scharquote:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2276 if (from == stop) goto lose;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2277 INC_BOTH (from, from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2278 /* treat following character as a word constituent */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2279 case Sword:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2280 case Ssymbol:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2281 if (depth || !sexpflag) break;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2282 /* This word counts as a sexp; return at end of it. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2283 while (from < stop)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2284 {
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2285 UPDATE_SYNTAX_TABLE_FORWARD (from);
22006
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2286
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2287 /* Some compilers can't handle this inside the switch. */
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2288 c = FETCH_CHAR (from_byte);
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2289 temp = SYNTAX_WITH_MULTIBYTE_CHECK (c);
22006
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2290 switch (temp)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2291 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2292 case Scharquote:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2293 case Sescape:
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2294 INC_BOTH (from, from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2295 if (from == stop) goto lose;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2296 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2297 case Sword:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2298 case Ssymbol:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2299 case Squote:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2300 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2301 default:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2302 goto done;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2303 }
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2304 INC_BOTH (from, from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2305 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2306 goto done;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2307
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2308 case Scomment_fence:
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2309 comstyle = ST_COMMENT_STYLE;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2310 /* FALLTHROUGH */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2311 case Scomment:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2312 if (!parse_sexp_ignore_comments) break;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2313 UPDATE_SYNTAX_TABLE_FORWARD (from);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2314 found = forw_comment (from, from_byte, stop,
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2315 comnested, comstyle, 0,
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2316 &out_charpos, &out_bytepos, &dummy);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2317 from = out_charpos, from_byte = out_bytepos;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2318 if (!found)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2319 {
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2320 if (depth == 0)
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2321 goto done;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2322 goto lose;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2323 }
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2324 INC_BOTH (from, from_byte);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2325 UPDATE_SYNTAX_TABLE_FORWARD (from);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2326 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2327
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2328 case Smath:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2329 if (!sexpflag)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2330 break;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2331 if (from != stop && c == FETCH_CHAR (from_byte))
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2332 {
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2333 INC_BOTH (from, from_byte);
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2334 }
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2335 if (mathexit)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2336 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2337 mathexit = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2338 goto close1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2339 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2340 mathexit = 1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2341
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2342 case Sopen:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2343 if (!++depth) goto done;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2344 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2345
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2346 case Sclose:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2347 close1:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2348 if (!--depth) goto done;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2349 if (depth < min_depth)
71988
8d894204c732 (scan_lists): Use xsignal3.
Kim F. Storm <storm@cua.dk>
parents: 71867
diff changeset
2350 xsignal3 (Qscan_error,
8d894204c732 (scan_lists): Use xsignal3.
Kim F. Storm <storm@cua.dk>
parents: 71867
diff changeset
2351 build_string ("Containing expression ends prematurely"),
8d894204c732 (scan_lists): Use xsignal3.
Kim F. Storm <storm@cua.dk>
parents: 71867
diff changeset
2352 make_number (last_good), make_number (from));
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2353 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2354
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2355 case Sstring:
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2356 case Sstring_fence:
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2357 temp_pos = dec_bytepos (from_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2358 stringterm = FETCH_CHAR (temp_pos);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2359 while (1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2360 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2361 if (from >= stop) goto lose;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2362 UPDATE_SYNTAX_TABLE_FORWARD (from);
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2363 c = FETCH_CHAR (from_byte);
34398
945b3e6bf3e7 (scan_lists): Check that the right quote char has the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32794
diff changeset
2364 if (code == Sstring
945b3e6bf3e7 (scan_lists): Check that the right quote char has the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32794
diff changeset
2365 ? (c == stringterm
945b3e6bf3e7 (scan_lists): Check that the right quote char has the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32794
diff changeset
2366 && SYNTAX_WITH_MULTIBYTE_CHECK (c) == Sstring)
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2367 : SYNTAX_WITH_MULTIBYTE_CHECK (c) == Sstring_fence)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2368 break;
22006
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2369
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2370 /* Some compilers can't handle this inside the switch. */
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2371 temp = SYNTAX_WITH_MULTIBYTE_CHECK (c);
22006
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2372 switch (temp)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2373 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2374 case Scharquote:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2375 case Sescape:
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2376 INC_BOTH (from, from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2377 }
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2378 INC_BOTH (from, from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2379 }
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2380 INC_BOTH (from, from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2381 if (!depth && sexpflag) goto done;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2382 break;
47872
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2383 default:
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2384 /* Ignore whitespace, punctuation, quote, endcomment. */
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2385 break;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2386 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2387 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2388
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2389 /* Reached end of buffer. Error if within object, return nil if between */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2390 if (depth) goto lose;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2391
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2392 immediate_quit = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2393 return Qnil;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2394
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2395 /* End of object reached */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2396 done:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2397 count--;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2398 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2399
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2400 while (count < 0)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2401 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2402 while (from > stop)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2403 {
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2404 DEC_BOTH (from, from_byte);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2405 UPDATE_SYNTAX_TABLE_BACKWARD (from);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2406 c = FETCH_CHAR (from_byte);
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2407 code = SYNTAX_WITH_MULTIBYTE_CHECK (c);
16992
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
2408 if (depth == min_depth)
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
2409 last_good = from;
4953
7545290052bf (Fforward_comment): On backward scan, exit inner loop
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2410 comstyle = 0;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2411 comnested = SYNTAX_COMMENT_NESTED (c);
4953
7545290052bf (Fforward_comment): On backward scan, exit inner loop
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2412 if (code == Sendcomment)
7545290052bf (Fforward_comment): On backward scan, exit inner loop
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2413 comstyle = SYNTAX_COMMENT_STYLE (c);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2414 if (from > stop && SYNTAX_COMEND_SECOND (c)
22486
a28020246db1 (skip_chars): Don't examine STRING before verifying that it is a string.
Richard M. Stallman <rms@gnu.org>
parents: 22432
diff changeset
2415 && prev_char_comend_first (from, from_byte)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2416 && parse_sexp_ignore_comments)
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2417 {
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2418 /* We must record the comment style encountered so that
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2419 later, we can match only the proper comment begin
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2420 sequence of the same style. */
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2421 DEC_BOTH (from, from_byte);
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2422 UPDATE_SYNTAX_TABLE_BACKWARD (from);
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2423 code = Sendcomment;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2424 c1 = FETCH_CHAR (from_byte);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2425 comstyle = SYNTAX_COMMENT_STYLE (c1);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2426 comnested = comnested || SYNTAX_COMMENT_NESTED (c1);
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2427 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2428
20674
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2429 /* Quoting turns anything except a comment-ender
29821
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
2430 into a word character. Note that this cannot be true
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2431 if we decremented FROM in the if-statement above. */
20674
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2432 if (code != Sendcomment && char_quoted (from, from_byte))
47872
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2433 {
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2434 DEC_BOTH (from, from_byte);
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2435 code = Sword;
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2436 }
20674
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2437 else if (SYNTAX_PREFIX (c))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2438 continue;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2439
20674
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2440 switch (SWITCH_ENUM_CAST (code))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2441 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2442 case Sword:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2443 case Ssymbol:
20674
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2444 case Sescape:
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2445 case Scharquote:
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2446 if (depth || !sexpflag) break;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2447 /* This word counts as a sexp; count object finished
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2448 after passing it. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2449 while (from > stop)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2450 {
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2451 temp_pos = from_byte;
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2452 if (! NILP (current_buffer->enable_multibyte_characters))
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2453 DEC_POS (temp_pos);
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2454 else
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2455 temp_pos--;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2456 UPDATE_SYNTAX_TABLE_BACKWARD (from - 1);
20674
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2457 c1 = FETCH_CHAR (temp_pos);
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2458 temp_code = SYNTAX_WITH_MULTIBYTE_CHECK (c1);
20674
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2459 /* Don't allow comment-end to be quoted. */
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2460 if (temp_code == Sendcomment)
fa7d4c0ee36c (skip_chars): Fix test for end of string, looking for `-'.
Karl Heuer <kwzh@gnu.org>
parents: 20626
diff changeset
2461 goto done2;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2462 quoted = char_quoted (from - 1, temp_pos);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2463 if (quoted)
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2464 {
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2465 DEC_BOTH (from, from_byte);
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2466 temp_pos = dec_bytepos (temp_pos);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2467 UPDATE_SYNTAX_TABLE_BACKWARD (from - 1);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2468 }
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2469 c1 = FETCH_CHAR (temp_pos);
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2470 temp_code = SYNTAX_WITH_MULTIBYTE_CHECK (c1);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2471 if (! (quoted || temp_code == Sword
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2472 || temp_code == Ssymbol
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2473 || temp_code == Squote))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2474 goto done2;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2475 DEC_BOTH (from, from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2476 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2477 goto done2;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2478
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2479 case Smath:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2480 if (!sexpflag)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2481 break;
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2482 temp_pos = dec_bytepos (from_byte);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2483 UPDATE_SYNTAX_TABLE_BACKWARD (from - 1);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2484 if (from != stop && c == FETCH_CHAR (temp_pos))
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2485 DEC_BOTH (from, from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2486 if (mathexit)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2487 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2488 mathexit = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2489 goto open2;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2490 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2491 mathexit = 1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2492
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2493 case Sclose:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2494 if (!++depth) goto done2;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2495 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2496
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2497 case Sopen:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2498 open2:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2499 if (!--depth) goto done2;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2500 if (depth < min_depth)
71988
8d894204c732 (scan_lists): Use xsignal3.
Kim F. Storm <storm@cua.dk>
parents: 71867
diff changeset
2501 xsignal3 (Qscan_error,
8d894204c732 (scan_lists): Use xsignal3.
Kim F. Storm <storm@cua.dk>
parents: 71867
diff changeset
2502 build_string ("Containing expression ends prematurely"),
8d894204c732 (scan_lists): Use xsignal3.
Kim F. Storm <storm@cua.dk>
parents: 71867
diff changeset
2503 make_number (last_good), make_number (from));
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2504 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2505
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2506 case Sendcomment:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2507 if (!parse_sexp_ignore_comments)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2508 break;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2509 found = back_comment (from, from_byte, stop, comnested, comstyle,
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2510 &out_charpos, &out_bytepos);
27698
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
2511 /* FIXME: if found == -1, then it really wasn't a comment-end.
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
2512 For single-char Sendcomment, we can't do much about it apart
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
2513 from skipping the char.
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
2514 For 2-char endcomments, we could try again, taking both
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
2515 chars as separate entities, but it's a lot of trouble
9c61956399b2 (back_comment): Make sure we only consider comment-starters
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27080
diff changeset
2516 for very little gain, so we don't bother either. -sm */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2517 if (found != -1)
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2518 from = out_charpos, from_byte = out_bytepos;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2519 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2520
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2521 case Scomment_fence:
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2522 case Sstring_fence:
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2523 while (1)
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2524 {
54849
3f107190e71f (scan_lists): Simplify backward string scan.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53508
diff changeset
2525 if (from == stop) goto lose;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2526 DEC_BOTH (from, from_byte);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2527 UPDATE_SYNTAX_TABLE_BACKWARD (from);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2528 if (!char_quoted (from, from_byte)
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2529 && (c = FETCH_CHAR (from_byte),
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
2530 SYNTAX_WITH_MULTIBYTE_CHECK (c) == code))
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2531 break;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2532 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2533 if (code == Sstring_fence && !depth && sexpflag) goto done2;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2534 break;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2535
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2536 case Sstring:
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2537 stringterm = FETCH_CHAR (from_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2538 while (1)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2539 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2540 if (from == stop) goto lose;
54849
3f107190e71f (scan_lists): Simplify backward string scan.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53508
diff changeset
2541 DEC_BOTH (from, from_byte);
3f107190e71f (scan_lists): Simplify backward string scan.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53508
diff changeset
2542 UPDATE_SYNTAX_TABLE_BACKWARD (from);
3f107190e71f (scan_lists): Simplify backward string scan.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53508
diff changeset
2543 if (!char_quoted (from, from_byte)
3f107190e71f (scan_lists): Simplify backward string scan.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53508
diff changeset
2544 && stringterm == (c = FETCH_CHAR (from_byte))
34398
945b3e6bf3e7 (scan_lists): Check that the right quote char has the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32794
diff changeset
2545 && SYNTAX_WITH_MULTIBYTE_CHECK (c) == Sstring)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2546 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2547 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2548 if (!depth && sexpflag) goto done2;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2549 break;
47872
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2550 default:
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2551 /* Ignore whitespace, punctuation, quote, endcomment. */
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2552 break;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2553 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2554 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2555
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2556 /* Reached start of buffer. Error if within object, return nil if between */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2557 if (depth) goto lose;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2558
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2559 immediate_quit = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2560 return Qnil;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2561
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2562 done2:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2563 count++;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2564 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2565
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2566
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2567 immediate_quit = 0;
9320
4be3f8f9f090 (Fcopy_syntax_table, Fmodify_syntax_entry, scan_lists, init_syntax_once):
Karl Heuer <kwzh@gnu.org>
parents: 9111
diff changeset
2568 XSETFASTINT (val, from);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2569 return val;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2570
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2571 lose:
71988
8d894204c732 (scan_lists): Use xsignal3.
Kim F. Storm <storm@cua.dk>
parents: 71867
diff changeset
2572 xsignal3 (Qscan_error,
8d894204c732 (scan_lists): Use xsignal3.
Kim F. Storm <storm@cua.dk>
parents: 71867
diff changeset
2573 build_string ("Unbalanced parentheses"),
8d894204c732 (scan_lists): Use xsignal3.
Kim F. Storm <storm@cua.dk>
parents: 71867
diff changeset
2574 make_number (last_good), make_number (from));
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2575 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2576
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2577 DEFUN ("scan-lists", Fscan_lists, Sscan_lists, 3, 3, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2578 doc: /* Scan from character number FROM by COUNT lists.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2579 Returns the character number of the position thus found.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2580
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2581 If DEPTH is nonzero, paren depth begins counting from that value,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2582 only places where the depth in parentheses becomes zero
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2583 are candidates for stopping; COUNT such places are counted.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2584 Thus, a positive value for DEPTH means go out levels.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2585
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2586 Comments are ignored if `parse-sexp-ignore-comments' is non-nil.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2587
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2588 If the beginning or end of (the accessible part of) the buffer is reached
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2589 and the depth is wrong, an error is signaled.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2590 If the depth is right but the count is not used up, nil is returned. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2591 (from, count, depth)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2592 Lisp_Object from, count, depth;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2593 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
2594 CHECK_NUMBER (from);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
2595 CHECK_NUMBER (count);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
2596 CHECK_NUMBER (depth);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2597
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2598 return scan_lists (XINT (from), XINT (count), XINT (depth), 0);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2599 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2600
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2601 DEFUN ("scan-sexps", Fscan_sexps, Sscan_sexps, 2, 2, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2602 doc: /* Scan from character number FROM by COUNT balanced expressions.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2603 If COUNT is negative, scan backwards.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2604 Returns the character number of the position thus found.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2605
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2606 Comments are ignored if `parse-sexp-ignore-comments' is non-nil.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2607
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2608 If the beginning or end of (the accessible part of) the buffer is reached
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2609 in the middle of a parenthetical grouping, an error is signaled.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2610 If the beginning or end is reached between groupings
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2611 but before count is used up, nil is returned. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2612 (from, count)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2613 Lisp_Object from, count;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2614 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
2615 CHECK_NUMBER (from);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
2616 CHECK_NUMBER (count);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2617
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2618 return scan_lists (XINT (from), XINT (count), 0, 1);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2619 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2620
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2621 DEFUN ("backward-prefix-chars", Fbackward_prefix_chars, Sbackward_prefix_chars,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2622 0, 0, 0,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2623 doc: /* Move point backward over any number of chars with prefix syntax.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2624 This includes chars with "quote" or "prefix" syntax (' or p). */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
2625 ()
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2626 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2627 int beg = BEGV;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2628 int opoint = PT;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2629 int opoint_byte = PT_BYTE;
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 14661
diff changeset
2630 int pos = PT;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2631 int pos_byte = PT_BYTE;
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2632 int c;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2633
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2634 if (pos <= beg)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2635 {
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2636 SET_PT_BOTH (opoint, opoint_byte);
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2637
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2638 return Qnil;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2639 }
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2640
22370
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2641 SETUP_SYNTAX_TABLE (pos, -1);
1f0dc0251be3 (scan_lists): Properly skip the comment-fence character
Richard M. Stallman <rms@gnu.org>
parents: 22130
diff changeset
2642
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2643 DEC_BOTH (pos, pos_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2644
21207
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2645 while (!char_quoted (pos, pos_byte)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2646 /* Previous statement updates syntax table. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2647 && ((c = FETCH_CHAR (pos_byte), SYNTAX (c) == Squote)
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2648 || SYNTAX_PREFIX (c)))
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2649 {
21207
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2650 opoint = pos;
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2651 opoint_byte = pos_byte;
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2652
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2653 if (pos + 1 > beg)
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2654 DEC_BOTH (pos, pos_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2655 }
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2656
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2657 SET_PT_BOTH (opoint, opoint_byte);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2658
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2659 return Qnil;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2660 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2661
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2662 /* Parse forward from FROM / FROM_BYTE to END,
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2663 assuming that FROM has state OLDSTATE (nil means FROM is start of function),
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2664 and return a description of the state of the parse at END.
3568
3ee951a22a80 (Fforward_comment): Set point to where scan stops,
Richard M. Stallman <rms@gnu.org>
parents: 3095
diff changeset
2665 If STOPBEFORE is nonzero, stop at the start of an atom.
20475
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2666 If COMMENTSTOP is 1, stop at the start of a comment.
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2667 If COMMENTSTOP is -1, stop at the start or end of a comment,
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2668 after the beginning of a string, or after the end of a string. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2669
3720
408c7ee69be7 (scan_lists, Fforward_comment): Pass 0 as commentstop arg
Richard M. Stallman <rms@gnu.org>
parents: 3684
diff changeset
2670 static void
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2671 scan_sexps_forward (stateptr, from, from_byte, end, targetdepth,
3568
3ee951a22a80 (Fforward_comment): Set point to where scan stops,
Richard M. Stallman <rms@gnu.org>
parents: 3095
diff changeset
2672 stopbefore, oldstate, commentstop)
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2673 struct lisp_parse_state *stateptr;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2674 register int from;
48324
04d5f3827d9f (scan_sexps_forward):
Dave Love <fx@gnu.org>
parents: 48266
diff changeset
2675 int end, targetdepth, stopbefore, from_byte;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2676 Lisp_Object oldstate;
3568
3ee951a22a80 (Fforward_comment): Set point to where scan stops,
Richard M. Stallman <rms@gnu.org>
parents: 3095
diff changeset
2677 int commentstop;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2678 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2679 struct lisp_parse_state state;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2680
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2681 register enum syntaxcode code;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2682 int c1;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2683 int comnested;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2684 struct level { int last, prev; };
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2685 struct level levelstart[100];
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2686 register struct level *curlevel = levelstart;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2687 struct level *endlevel = levelstart + 100;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2688 register int depth; /* Paren depth of current scanning location.
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2689 level - levelstart equals this except
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2690 when the depth becomes negative. */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2691 int mindepth; /* Lowest DEPTH value seen. */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2692 int start_quoted = 0; /* Nonzero means starting after a char quote */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2693 Lisp_Object tem;
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2694 int prev_from; /* Keep one character before FROM. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2695 int prev_from_byte;
21207
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2696 int prev_from_syntax;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2697 int boundary_stop = commentstop == -1;
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2698 int nofence;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2699 int found;
71867
c8c21ddb276e (scan_sexps_forward): Use EMACS_INT for out_bytepos and
Andreas Schwab <schwab@suse.de>
parents: 71843
diff changeset
2700 EMACS_INT out_bytepos, out_charpos;
22006
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2701 int temp;
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2702
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2703 prev_from = from;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2704 prev_from_byte = from_byte;
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2705 if (from != BEGV)
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2706 DEC_BOTH (prev_from, prev_from_byte);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2707
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2708 /* Use this macro instead of `from++'. */
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2709 #define INC_FROM \
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2710 do { prev_from = from; \
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2711 prev_from_byte = from_byte; \
56067
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
2712 temp = FETCH_CHAR (prev_from_byte); \
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
2713 prev_from_syntax = SYNTAX_WITH_FLAGS (temp); \
20905
e646a6ae42cd (skip_chars): Use INC_POS instead of INC_BOTH.
Richard M. Stallman <rms@gnu.org>
parents: 20766
diff changeset
2714 INC_BOTH (from, from_byte); \
48266
a404c0056619 (scan_sexps_forward): Undo last patch.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48236
diff changeset
2715 if (from < end) \
a404c0056619 (scan_sexps_forward): Undo last patch.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48236
diff changeset
2716 UPDATE_SYNTAX_TABLE_FORWARD (from); \
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2717 } while (0)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2718
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2719 immediate_quit = 1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2720 QUIT;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2721
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 163
diff changeset
2722 if (NILP (oldstate))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2723 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2724 depth = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2725 state.instring = -1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2726 state.incomment = 0;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2727 state.comstyle = 0; /* comment style a by default. */
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2728 state.comstr_start = -1; /* no comment/string seen. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2729 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2730 else
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2731 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2732 tem = Fcar (oldstate);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 163
diff changeset
2733 if (!NILP (tem))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2734 depth = XINT (tem);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2735 else
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2736 depth = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2737
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2738 oldstate = Fcdr (oldstate);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2739 oldstate = Fcdr (oldstate);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2740 oldstate = Fcdr (oldstate);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2741 tem = Fcar (oldstate);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2742 /* Check whether we are inside string_fence-style string: */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2743 state.instring = (!NILP (tem)
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2744 ? (INTEGERP (tem) ? XINT (tem) : ST_STRING_STYLE)
26272
1cbb1b30793d Remove whitespace after open or in front of closing parentheses.
Gerd Moellmann <gerd@gnu.org>
parents: 26060
diff changeset
2745 : -1);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2746
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2747 oldstate = Fcdr (oldstate);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2748 tem = Fcar (oldstate);
26272
1cbb1b30793d Remove whitespace after open or in front of closing parentheses.
Gerd Moellmann <gerd@gnu.org>
parents: 26060
diff changeset
2749 state.incomment = (!NILP (tem)
1cbb1b30793d Remove whitespace after open or in front of closing parentheses.
Gerd Moellmann <gerd@gnu.org>
parents: 26060
diff changeset
2750 ? (INTEGERP (tem) ? XINT (tem) : -1)
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2751 : 0);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2752
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2753 oldstate = Fcdr (oldstate);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2754 tem = Fcar (oldstate);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 163
diff changeset
2755 start_quoted = !NILP (tem);
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2756
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2757 /* if the eighth element of the list is nil, we are in comment
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2758 style a. If it is non-nil, we are in comment style b */
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2759 oldstate = Fcdr (oldstate);
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2760 oldstate = Fcdr (oldstate);
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2761 tem = Fcar (oldstate);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2762 state.comstyle = NILP (tem) ? 0 : (EQ (tem, Qsyntax_table)
26272
1cbb1b30793d Remove whitespace after open or in front of closing parentheses.
Gerd Moellmann <gerd@gnu.org>
parents: 26060
diff changeset
2763 ? ST_COMMENT_STYLE : 1);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2764
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2765 oldstate = Fcdr (oldstate);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2766 tem = Fcar (oldstate);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2767 state.comstr_start = NILP (tem) ? -1 : XINT (tem) ;
22394
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2768 oldstate = Fcdr (oldstate);
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2769 tem = Fcar (oldstate);
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2770 while (!NILP (tem)) /* >= second enclosing sexps. */
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2771 {
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2772 /* curlevel++->last ran into compiler bug on Apollo */
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2773 curlevel->last = XINT (Fcar (tem));
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2774 if (++curlevel == endlevel)
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
2775 curlevel--; /* error ("Nesting too deep for parser"); */
22394
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2776 curlevel->prev = -1;
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2777 curlevel->last = -1;
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2778 tem = Fcdr (tem);
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
2779 }
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2780 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2781 state.quoted = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2782 mindepth = depth;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2783
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2784 curlevel->prev = -1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2785 curlevel->last = -1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2786
22994
85f64bf341c3 (scan_sexps_forward): Set up the syntax table scanning
Richard M. Stallman <rms@gnu.org>
parents: 22547
diff changeset
2787 SETUP_SYNTAX_TABLE (prev_from, 1);
56067
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
2788 temp = FETCH_CHAR (prev_from_byte);
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
2789 prev_from_syntax = SYNTAX_WITH_FLAGS (temp);
48266
a404c0056619 (scan_sexps_forward): Undo last patch.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48236
diff changeset
2790 UPDATE_SYNTAX_TABLE_FORWARD (from);
22994
85f64bf341c3 (scan_sexps_forward): Set up the syntax table scanning
Richard M. Stallman <rms@gnu.org>
parents: 22547
diff changeset
2791
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2792 /* Enter the loop at a place appropriate for initial state. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2793
22994
85f64bf341c3 (scan_sexps_forward): Set up the syntax table scanning
Richard M. Stallman <rms@gnu.org>
parents: 22547
diff changeset
2794 if (state.incomment)
85f64bf341c3 (scan_sexps_forward): Set up the syntax table scanning
Richard M. Stallman <rms@gnu.org>
parents: 22547
diff changeset
2795 goto startincomment;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2796 if (state.instring >= 0)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2797 {
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2798 nofence = state.instring != ST_STRING_STYLE;
22994
85f64bf341c3 (scan_sexps_forward): Set up the syntax table scanning
Richard M. Stallman <rms@gnu.org>
parents: 22547
diff changeset
2799 if (start_quoted)
85f64bf341c3 (scan_sexps_forward): Set up the syntax table scanning
Richard M. Stallman <rms@gnu.org>
parents: 22547
diff changeset
2800 goto startquotedinstring;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2801 goto startinstring;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2802 }
22994
85f64bf341c3 (scan_sexps_forward): Set up the syntax table scanning
Richard M. Stallman <rms@gnu.org>
parents: 22547
diff changeset
2803 else if (start_quoted)
85f64bf341c3 (scan_sexps_forward): Set up the syntax table scanning
Richard M. Stallman <rms@gnu.org>
parents: 22547
diff changeset
2804 goto startquoted;
21207
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2805
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2806 while (from < end)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2807 {
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2808 INC_FROM;
21207
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2809 code = prev_from_syntax & 0xff;
18491
bf0d449581c8 (scan_sexps_forward): Split up a complex if-test.
Richard M. Stallman <rms@gnu.org>
parents: 18113
diff changeset
2810
57756
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2811 if (from < end
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2812 && SYNTAX_FLAGS_COMSTART_FIRST (prev_from_syntax)
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2813 && (c1 = FETCH_CHAR (from_byte),
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2814 SYNTAX_COMSTART_SECOND (c1)))
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2815 /* Duplicate code to avoid a complex if-expression
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2816 which causes trouble for the SGI compiler. */
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2817 {
57756
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2818 /* Record the comment style we have entered so that only
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2819 the comment-end sequence of the same style actually
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2820 terminates the comment section. */
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2821 state.comstyle = SYNTAX_COMMENT_STYLE (c1);
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2822 comnested = SYNTAX_FLAGS_COMMENT_NESTED (prev_from_syntax);
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2823 comnested = comnested || SYNTAX_COMMENT_NESTED (c1);
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2824 state.incomment = comnested ? 1 : -1;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2825 state.comstr_start = prev_from;
57756
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2826 INC_FROM;
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2827 code = Scomment;
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2828 }
18491
bf0d449581c8 (scan_sexps_forward): Split up a complex if-test.
Richard M. Stallman <rms@gnu.org>
parents: 18113
diff changeset
2829 else if (code == Scomment_fence)
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2830 {
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2831 /* Record the comment style we have entered so that only
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2832 the comment-end sequence of the same style actually
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2833 terminates the comment section. */
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2834 state.comstyle = ST_COMMENT_STYLE;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2835 state.incomment = -1;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2836 state.comstr_start = prev_from;
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2837 code = Scomment;
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2838 }
57756
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2839 else if (code == Scomment)
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2840 {
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2841 state.comstyle = SYNTAX_FLAGS_COMMENT_STYLE (prev_from_syntax);
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2842 state.incomment = (SYNTAX_FLAGS_COMMENT_NESTED (prev_from_syntax) ?
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2843 1 : -1);
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2844 state.comstr_start = prev_from;
a8bc01ac68d0 (scan_sexps_forward): Prefer 2-char comment-starter over a 1-char one.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56724
diff changeset
2845 }
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2846
21207
390b39d69836 (Fbackward_prefix_chars): Set point properly while scanning.
Richard M. Stallman <rms@gnu.org>
parents: 21011
diff changeset
2847 if (SYNTAX_FLAGS_PREFIX (prev_from_syntax))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2848 continue;
10457
2ab3bd0288a9 Change all occurences of SWITCH_ENUM_BUG to use SWITCH_ENUM_CAST instead.
Karl Heuer <kwzh@gnu.org>
parents: 9863
diff changeset
2849 switch (SWITCH_ENUM_CAST (code))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2850 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2851 case Sescape:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2852 case Scharquote:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2853 if (stopbefore) goto stop; /* this arg means stop at sexp start */
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2854 curlevel->last = prev_from;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2855 startquoted:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2856 if (from == end) goto endquoted;
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2857 INC_FROM;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2858 goto symstarted;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2859 /* treat following character as a word constituent */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2860 case Sword:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2861 case Ssymbol:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2862 if (stopbefore) goto stop; /* this arg means stop at sexp start */
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2863 curlevel->last = prev_from;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2864 symstarted:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2865 while (from < end)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2866 {
22006
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2867 /* Some compilers can't handle this inside the switch. */
56067
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
2868 temp = FETCH_CHAR (from_byte);
c1e92ca4c785 (char_quoted): Avoid warning about undefined operation.
Andreas Schwab <schwab@suse.de>
parents: 55423
diff changeset
2869 temp = SYNTAX (temp);
22006
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2870 switch (temp)
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2871 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2872 case Scharquote:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2873 case Sescape:
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2874 INC_FROM;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2875 if (from == end) goto endquoted;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2876 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2877 case Sword:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2878 case Ssymbol:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2879 case Squote:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2880 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2881 default:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2882 goto symdone;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2883 }
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2884 INC_FROM;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2885 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2886 symdone:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2887 curlevel->prev = curlevel->last;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2888 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2889
47872
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2890 case Scomment_fence: /* Can't happen because it's handled above. */
29823
5a736b07dbf2 (scan_sexps_forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29821
diff changeset
2891 case Scomment:
5a736b07dbf2 (scan_sexps_forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29821
diff changeset
2892 if (commentstop || boundary_stop) goto done;
9475
c15caadae3c4 (scan_sexps_forward): At startincomment,
Richard M. Stallman <rms@gnu.org>
parents: 9411
diff changeset
2893 startincomment:
29823
5a736b07dbf2 (scan_sexps_forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29821
diff changeset
2894 /* The (from == BEGV) test was to enter the loop in the middle so
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2895 that we find a 2-char comment ender even if we start in the
29821
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
2896 middle of it. We don't want to do that if we're just at the
29823
5a736b07dbf2 (scan_sexps_forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29821
diff changeset
2897 beginning of the comment (think of (*) ... (*)). */
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2898 found = forw_comment (from, from_byte, end,
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2899 state.incomment, state.comstyle,
29821
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
2900 (from == BEGV || from < state.comstr_start + 3)
819dfcbd36c7 (describe_syntax): Recognize the `n'estable bit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29757
diff changeset
2901 ? 0 : prev_from_syntax,
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2902 &out_charpos, &out_bytepos, &state.incomment);
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2903 from = out_charpos; from_byte = out_bytepos;
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2904 /* Beware! prev_from and friends are invalid now.
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2905 Luckily, the `done' doesn't use them and the INC_FROM
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2906 sets them to a sane value without looking at them. */
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
2907 if (!found) goto done;
29823
5a736b07dbf2 (scan_sexps_forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29821
diff changeset
2908 INC_FROM;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2909 state.incomment = 0;
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
2910 state.comstyle = 0; /* reset the comment style */
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2911 if (boundary_stop) goto done;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2912 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2913
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2914 case Sopen:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2915 if (stopbefore) goto stop; /* this arg means stop at sexp start */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2916 depth++;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2917 /* curlevel++->last ran into compiler bug on Apollo */
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2918 curlevel->last = prev_from;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2919 if (++curlevel == endlevel)
30156
f59021679260 (back_comment): Use one switch rather than a few `if's.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29835
diff changeset
2920 curlevel--; /* error ("Nesting too deep for parser"); */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2921 curlevel->prev = -1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2922 curlevel->last = -1;
12894
b2a75405de3c (scan_sexps_forward): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 12870
diff changeset
2923 if (targetdepth == depth) goto done;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2924 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2925
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2926 case Sclose:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2927 depth--;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2928 if (depth < mindepth)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2929 mindepth = depth;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2930 if (curlevel != levelstart)
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2931 curlevel--;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2932 curlevel->prev = curlevel->last;
12894
b2a75405de3c (scan_sexps_forward): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 12870
diff changeset
2933 if (targetdepth == depth) goto done;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2934 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2935
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2936 case Sstring:
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2937 case Sstring_fence:
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2938 state.comstr_start = from - 1;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2939 if (stopbefore) goto stop; /* this arg means stop at sexp start */
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2940 curlevel->last = prev_from;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2941 state.instring = (code == Sstring
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2942 ? (FETCH_CHAR (prev_from_byte))
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2943 : ST_STRING_STYLE);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2944 if (boundary_stop) goto done;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2945 startinstring:
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2946 {
20475
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2947 nofence = state.instring != ST_STRING_STYLE;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
2948
20475
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2949 while (1)
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2950 {
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2951 int c;
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2952
20475
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2953 if (from >= end) goto done;
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
2954 c = FETCH_CHAR (from_byte);
22006
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2955 /* Some compilers can't handle this inside the switch. */
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2956 temp = SYNTAX (c);
24148
b69751ec40fe (scan_sexps_forward): Delete duplicate code
Karl Heuer <kwzh@gnu.org>
parents: 23503
diff changeset
2957
b69751ec40fe (scan_sexps_forward): Delete duplicate code
Karl Heuer <kwzh@gnu.org>
parents: 23503
diff changeset
2958 /* Check TEMP here so that if the char has
b69751ec40fe (scan_sexps_forward): Delete duplicate code
Karl Heuer <kwzh@gnu.org>
parents: 23503
diff changeset
2959 a syntax-table property which says it is NOT
b69751ec40fe (scan_sexps_forward): Delete duplicate code
Karl Heuer <kwzh@gnu.org>
parents: 23503
diff changeset
2960 a string character, it does not end the string. */
b69751ec40fe (scan_sexps_forward): Delete duplicate code
Karl Heuer <kwzh@gnu.org>
parents: 23503
diff changeset
2961 if (nofence && c == state.instring && temp == Sstring)
b69751ec40fe (scan_sexps_forward): Delete duplicate code
Karl Heuer <kwzh@gnu.org>
parents: 23503
diff changeset
2962 break;
b69751ec40fe (scan_sexps_forward): Delete duplicate code
Karl Heuer <kwzh@gnu.org>
parents: 23503
diff changeset
2963
22006
31c39cdc9e11 (scan_lists, scan_sexps_forward): Move complex expressions
Richard M. Stallman <rms@gnu.org>
parents: 21514
diff changeset
2964 switch (temp)
20475
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2965 {
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2966 case Sstring_fence:
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2967 if (!nofence) goto string_end;
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2968 break;
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2969 case Scharquote:
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2970 case Sescape:
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2971 INC_FROM;
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2972 startquotedinstring:
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2973 if (from >= end) goto endquoted;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2974 }
20475
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2975 INC_FROM;
efbebc38e077 Comment and whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 20330
diff changeset
2976 }
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2977 }
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2978 string_end:
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2979 state.instring = -1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2980 curlevel->prev = curlevel->last;
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2981 INC_FROM;
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
2982 if (boundary_stop) goto done;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2983 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2984
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2985 case Smath:
47872
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2986 /* FIXME: We should do something with it. */
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2987 break;
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2988 default:
e5d59debb925 (scan_lists): Don't get fooled by a symbol ending with a backslash-quoted char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46555
diff changeset
2989 /* Ignore whitespace, punctuation, quote, endcomment. */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2990 break;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2991 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2992 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2993 goto done;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2994
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2995 stop: /* Here if stopping before start of sexp. */
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
2996 from = prev_from; /* We have just fetched the char that starts it; */
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2997 goto done; /* but return the position before it. */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2998
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2999 endquoted:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3000 state.quoted = 1;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3001 done:
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3002 state.depth = depth;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3003 state.mindepth = mindepth;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3004 state.thislevelstart = curlevel->prev;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3005 state.prevlevelstart
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3006 = (curlevel == levelstart) ? -1 : (curlevel - 1)->last;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3007 state.location = from;
22394
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
3008 state.levelstarts = Qnil;
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
3009 while (--curlevel >= levelstart)
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
3010 state.levelstarts = Fcons (make_number (curlevel->last),
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
3011 state.levelstarts);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3012 immediate_quit = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3013
1085
91a456e52db1 (scan_lists): Improve smarts for backwards scan of comments.
Richard M. Stallman <rms@gnu.org>
parents: 726
diff changeset
3014 *stateptr = state;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3015 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3016
3568
3ee951a22a80 (Fforward_comment): Set point to where scan stops,
Richard M. Stallman <rms@gnu.org>
parents: 3095
diff changeset
3017 DEFUN ("parse-partial-sexp", Fparse_partial_sexp, Sparse_partial_sexp, 2, 6, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3018 doc: /* Parse Lisp syntax starting at FROM until TO; return status of parse at TO.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3019 Parsing stops at TO or when certain criteria are met;
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3020 point is set to where parsing stops.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3021 If fifth arg OLDSTATE is omitted or nil,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3022 parsing assumes that FROM is the beginning of a function.
66525
aaac09f838e0 (Fparse_partial_sexp): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65215
diff changeset
3023 Value is a list of elements describing final state of parsing:
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3024 0. depth in parens.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3025 1. character address of start of innermost containing list; nil if none.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3026 2. character address of start of last complete sexp terminated.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3027 3. non-nil if inside a string.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3028 (it is the character that will terminate the string,
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3029 or t if the string should be terminated by a generic string delimiter.)
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
3030 4. nil if outside a comment, t if inside a non-nestable comment,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3031 else an integer (the current comment nesting).
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3032 5. t if following a quote character.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3033 6. the minimum paren-depth encountered during this scan.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3034 7. t if in a comment of style b; symbol `syntax-table' if the comment
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3035 should be terminated by a generic comment delimiter.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3036 8. character address of start of comment or string; nil if not in one.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3037 9. Intermediate data for continuation of parsing (subject to change).
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3038 If third arg TARGETDEPTH is non-nil, parsing stops if the depth
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3039 in parentheses becomes equal to TARGETDEPTH.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3040 Fourth arg STOPBEFORE non-nil means stop when come to
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3041 any character that starts a sexp.
66525
aaac09f838e0 (Fparse_partial_sexp): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65215
diff changeset
3042 Fifth arg OLDSTATE is a list like what this function returns.
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3043 It is used to initialize the state of the parse. Elements number 1, 2, 6
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3044 and 8 are ignored; you can leave off element 8 (the last) entirely.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3045 Sixth arg COMMENTSTOP non-nil means stop at the start of a comment.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3046 If it is symbol `syntax-table', stop after the start of a comment or a
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3047 string, or after end of a comment or a string. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3048 (from, to, targetdepth, stopbefore, oldstate, commentstop)
3568
3ee951a22a80 (Fforward_comment): Set point to where scan stops,
Richard M. Stallman <rms@gnu.org>
parents: 3095
diff changeset
3049 Lisp_Object from, to, targetdepth, stopbefore, oldstate, commentstop;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3050 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3051 struct lisp_parse_state state;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3052 int target;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3053
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 163
diff changeset
3054 if (!NILP (targetdepth))
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3055 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40286
diff changeset
3056 CHECK_NUMBER (targetdepth);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3057 target = XINT (targetdepth);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3058 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3059 else
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3060 target = -100000; /* We won't reach this depth */
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3061
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3062 validate_region (&from, &to);
20546
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
3063 scan_sexps_forward (&state, XINT (from), CHAR_TO_BYTE (XINT (from)),
a475efff810e (scan_sexps_forward): Additional arg FROM_BYTE. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents: 20486
diff changeset
3064 XINT (to),
3568
3ee951a22a80 (Fforward_comment): Set point to where scan stops,
Richard M. Stallman <rms@gnu.org>
parents: 3095
diff changeset
3065 target, !NILP (stopbefore), oldstate,
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
3066 (NILP (commentstop)
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
3067 ? 0 : (EQ (commentstop, Qsyntax_table) ? -1 : 1)));
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3068
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3069 SET_PT (state.location);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
3070
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3071 return Fcons (make_number (state.depth),
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3072 Fcons (state.prevlevelstart < 0 ? Qnil : make_number (state.prevlevelstart),
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3073 Fcons (state.thislevelstart < 0 ? Qnil : make_number (state.thislevelstart),
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
3074 Fcons (state.instring >= 0
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
3075 ? (state.instring == ST_STRING_STYLE
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
3076 ? Qt : make_number (state.instring)) : Qnil,
25445
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
3077 Fcons (state.incomment < 0 ? Qt :
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
3078 (state.incomment == 0 ? Qnil :
d678b229c05a (lisp_parse_state, back_comment, Fmodify_syntax_entry)
Richard M. Stallman <rms@gnu.org>
parents: 25401
diff changeset
3079 make_number (state.incomment)),
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3080 Fcons (state.quoted ? Qt : Qnil,
20486
26d12c66acc1 (Fparse_partial_sexp): Return nil for 9th element
Richard M. Stallman <rms@gnu.org>
parents: 20475
diff changeset
3081 Fcons (make_number (state.mindepth),
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47872
diff changeset
3082 Fcons ((state.comstyle
20486
26d12c66acc1 (Fparse_partial_sexp): Return nil for 9th element
Richard M. Stallman <rms@gnu.org>
parents: 20475
diff changeset
3083 ? (state.comstyle == ST_COMMENT_STYLE
26d12c66acc1 (Fparse_partial_sexp): Return nil for 9th element
Richard M. Stallman <rms@gnu.org>
parents: 20475
diff changeset
3084 ? Qsyntax_table : Qt) :
26d12c66acc1 (Fparse_partial_sexp): Return nil for 9th element
Richard M. Stallman <rms@gnu.org>
parents: 20475
diff changeset
3085 Qnil),
24728
e94104cf5891 (Fparse_partial_sexp): Correct test for element 8 to be
Dave Love <fx@gnu.org>
parents: 24148
diff changeset
3086 Fcons (((state.incomment
e94104cf5891 (Fparse_partial_sexp): Correct test for element 8 to be
Dave Love <fx@gnu.org>
parents: 24148
diff changeset
3087 || (state.instring >= 0))
20486
26d12c66acc1 (Fparse_partial_sexp): Return nil for 9th element
Richard M. Stallman <rms@gnu.org>
parents: 20475
diff changeset
3088 ? make_number (state.comstr_start)
26d12c66acc1 (Fparse_partial_sexp): Return nil for 9th element
Richard M. Stallman <rms@gnu.org>
parents: 20475
diff changeset
3089 : Qnil),
22394
5e1f0caf1873 (struct lisp_parse_state): New field, levelstarts.
Richard M. Stallman <rms@gnu.org>
parents: 22370
diff changeset
3090 Fcons (state.levelstarts, Qnil))))))))));
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3091 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3092
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21207
diff changeset
3093 void
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3094 init_syntax_once ()
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3095 {
17126
f8d7263cce09 (init_syntax_once): Add trick to avoid compiler warning
Kenichi Handa <handa@m17n.org>
parents: 17109
diff changeset
3096 register int i, c;
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3097 Lisp_Object temp;
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3098
13218
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3099 /* This has to be done here, before we call Fmake_char_table. */
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3100 Qsyntax_table = intern ("syntax-table");
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3101 staticpro (&Qsyntax_table);
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3102
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3103 /* Intern this now in case it isn't already done.
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3104 Setting this variable twice is harmless.
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3105 But don't staticpro it here--that is done in alloc.c. */
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3106 Qchar_table_extra_slots = intern ("char-table-extra-slots");
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3107
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3108 /* Create objects which can be shared among syntax tables. */
34398
945b3e6bf3e7 (scan_lists): Check that the right quote char has the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32794
diff changeset
3109 Vsyntax_code_object = Fmake_vector (make_number (Smax), Qnil);
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3110 for (i = 0; i < XVECTOR (Vsyntax_code_object)->size; i++)
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3111 XVECTOR (Vsyntax_code_object)->contents[i]
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3112 = Fcons (make_number (i), Qnil);
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3113
13218
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3114 /* Now we are ready to set up this property, so we can
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3115 create syntax tables. */
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3116 Fput (Qsyntax_table, Qchar_table_extra_slots, make_number (0));
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3117
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3118 temp = XVECTOR (Vsyntax_code_object)->contents[(int) Swhitespace];
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3119
13218
d2fc560c7740 (Qsyntax_table): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13144
diff changeset
3120 Vstandard_syntax_table = Fmake_char_table (Qsyntax_table, temp);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3121
71395
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3122 /* Control characters should not be whitespace. */
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3123 temp = XVECTOR (Vsyntax_code_object)->contents[(int) Spunct];
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3124 for (i = 0; i <= ' ' - 1; i++)
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3125 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, i, temp);
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3126 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, 0177, temp);
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3127
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3128 /* Except that a few really are whitespace. */
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3129 temp = XVECTOR (Vsyntax_code_object)->contents[(int) Swhitespace];
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3130 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, ' ', temp);
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3131 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '\t', temp);
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3132 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '\n', temp);
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3133 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, 015, temp);
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3134 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, 014, temp);
923b7f99b0d7 (init_syntax_once): Give most control chars' syntax Spunct.
Richard M. Stallman <rms@gnu.org>
parents: 70317
diff changeset
3135
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3136 temp = XVECTOR (Vsyntax_code_object)->contents[(int) Sword];
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3137 for (i = 'a'; i <= 'z'; i++)
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3138 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, i, temp);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3139 for (i = 'A'; i <= 'Z'; i++)
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3140 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, i, temp);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3141 for (i = '0'; i <= '9'; i++)
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3142 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, i, temp);
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3143
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3144 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '$', temp);
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3145 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '%', temp);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3146
13144
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3147 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '(',
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3148 Fcons (make_number (Sopen), make_number (')')));
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3149 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, ')',
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3150 Fcons (make_number (Sclose), make_number ('(')));
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3151 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '[',
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3152 Fcons (make_number (Sopen), make_number (']')));
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3153 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, ']',
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3154 Fcons (make_number (Sclose), make_number ('[')));
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3155 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '{',
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3156 Fcons (make_number (Sopen), make_number ('}')));
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3157 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '}',
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3158 Fcons (make_number (Sclose), make_number ('{')));
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3159 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '"',
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3160 Fcons (make_number ((int) Sstring), Qnil));
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3161 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, '\\',
fd14ccddb85a (describe_syntax): Handle new syntax-table data format.
Richard M. Stallman <rms@gnu.org>
parents: 12894
diff changeset
3162 Fcons (make_number ((int) Sescape), Qnil));
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3163
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3164 temp = XVECTOR (Vsyntax_code_object)->contents[(int) Ssymbol];
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3165 for (i = 0; i < 10; i++)
17126
f8d7263cce09 (init_syntax_once): Add trick to avoid compiler warning
Kenichi Handa <handa@m17n.org>
parents: 17109
diff changeset
3166 {
f8d7263cce09 (init_syntax_once): Add trick to avoid compiler warning
Kenichi Handa <handa@m17n.org>
parents: 17109
diff changeset
3167 c = "_-+*/&|<>="[i];
f8d7263cce09 (init_syntax_once): Add trick to avoid compiler warning
Kenichi Handa <handa@m17n.org>
parents: 17109
diff changeset
3168 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, c, temp);
f8d7263cce09 (init_syntax_once): Add trick to avoid compiler warning
Kenichi Handa <handa@m17n.org>
parents: 17109
diff changeset
3169 }
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3170
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3171 temp = XVECTOR (Vsyntax_code_object)->contents[(int) Spunct];
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3172 for (i = 0; i < 12; i++)
17126
f8d7263cce09 (init_syntax_once): Add trick to avoid compiler warning
Kenichi Handa <handa@m17n.org>
parents: 17109
diff changeset
3173 {
f8d7263cce09 (init_syntax_once): Add trick to avoid compiler warning
Kenichi Handa <handa@m17n.org>
parents: 17109
diff changeset
3174 c = ".,;:?!#@~^'`"[i];
f8d7263cce09 (init_syntax_once): Add trick to avoid compiler warning
Kenichi Handa <handa@m17n.org>
parents: 17109
diff changeset
3175 SET_RAW_SYNTAX_ENTRY (Vstandard_syntax_table, c, temp);
f8d7263cce09 (init_syntax_once): Add trick to avoid compiler warning
Kenichi Handa <handa@m17n.org>
parents: 17109
diff changeset
3176 }
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
3177
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
3178 /* All multibyte characters have syntax `word' by default. */
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
3179 temp = XVECTOR (Vsyntax_code_object)->contents[(int) Sword];
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
3180 for (i = CHAR_TABLE_SINGLE_BYTE_SLOTS; i < CHAR_TABLE_ORDINARY_SLOTS; i++)
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
3181 XCHAR_TABLE (Vstandard_syntax_table)->contents[i] = temp;
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3182 }
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3183
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21207
diff changeset
3184 void
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3185 syms_of_syntax ()
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3186 {
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3187 Qsyntax_table_p = intern ("syntax-table-p");
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3188 staticpro (&Qsyntax_table_p);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3189
17044
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3190 staticpro (&Vsyntax_code_object);
f07c36097f33 Include charset.h and category.h.
Karl Heuer <kwzh@gnu.org>
parents: 16992
diff changeset
3191
64319
6ba9b52e77fc (syms_of_syntax): Staticpro lisp objects in gl_state.
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
3192 staticpro (&gl_state.object);
6ba9b52e77fc (syms_of_syntax): Staticpro lisp objects in gl_state.
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
3193 staticpro (&gl_state.global_code);
6ba9b52e77fc (syms_of_syntax): Staticpro lisp objects in gl_state.
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
3194 staticpro (&gl_state.current_syntax_table);
6ba9b52e77fc (syms_of_syntax): Staticpro lisp objects in gl_state.
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
3195 staticpro (&gl_state.old_prop);
6ba9b52e77fc (syms_of_syntax): Staticpro lisp objects in gl_state.
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
3196
6ba9b52e77fc (syms_of_syntax): Staticpro lisp objects in gl_state.
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
3197 /* Defined in regex.c */
6ba9b52e77fc (syms_of_syntax): Staticpro lisp objects in gl_state.
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
3198 staticpro (&re_match_object);
6ba9b52e77fc (syms_of_syntax): Staticpro lisp objects in gl_state.
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
3199
16992
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
3200 Qscan_error = intern ("scan-error");
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
3201 staticpro (&Qscan_error);
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
3202 Fput (Qscan_error, Qerror_conditions,
23503
ce7900230b17 (syms_of_syntax): Fix the setup of Qscan_error.
Richard M. Stallman <rms@gnu.org>
parents: 23404
diff changeset
3203 Fcons (Qscan_error, Fcons (Qerror, Qnil)));
16992
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
3204 Fput (Qscan_error, Qerror_message,
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
3205 build_string ("Scan error"));
ff7346c31184 (scan_lists): Signal errors using scan-error.
Richard M. Stallman <rms@gnu.org>
parents: 16039
diff changeset
3206
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3207 DEFVAR_BOOL ("parse-sexp-ignore-comments", &parse_sexp_ignore_comments,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3208 doc: /* Non-nil means `forward-sexp', etc., should treat comments as whitespace. */);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3209
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
3210 DEFVAR_BOOL ("parse-sexp-lookup-properties", &parse_sexp_lookup_properties,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3211 doc: /* Non-nil means `forward-sexp', etc., obey `syntax-table' property.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3212 Otherwise, that text property is simply ignored.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3213 See the info node `(elisp)Syntax Properties' for a description of the
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3214 `syntax-table' property. */);
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
3215
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3216 words_include_escapes = 0;
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3217 DEFVAR_BOOL ("words-include-escapes", &words_include_escapes,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3218 doc: /* Non-nil means `forward-word', etc., should treat escape chars part of words. */);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3219
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
3220 DEFVAR_BOOL ("multibyte-syntax-as-symbol", &multibyte_syntax_as_symbol,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39796
diff changeset
3221 doc: /* Non-nil means `scan-sexps' treats all multibyte characters as symbol. */);
27812
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
3222 multibyte_syntax_as_symbol = 0;
e2216823484d (multibyte_syntax_as_symbol): New variable.
Kenichi Handa <handa@m17n.org>
parents: 27719
diff changeset
3223
28302
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
3224 DEFVAR_BOOL ("open-paren-in-column-0-is-defun-start",
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
3225 &open_paren_in_column_0_is_defun_start,
49551
fd7582381b9e (Fskip_chars_forward)
Dave Love <fx@gnu.org>
parents: 48324
diff changeset
3226 doc: /* *Non-nil means an open paren in column 0 denotes the start of a defun. */);
28302
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
3227 open_paren_in_column_0_is_defun_start = 1;
27ffe1e3b06d (open_paren_in_column_0_is_defun_start): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 28269
diff changeset
3228
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3229 defsubr (&Ssyntax_table_p);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3230 defsubr (&Ssyntax_table);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3231 defsubr (&Sstandard_syntax_table);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3232 defsubr (&Scopy_syntax_table);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3233 defsubr (&Sset_syntax_table);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3234 defsubr (&Schar_syntax);
7968
a6372621abd9 (Fmatching_paren): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7924
diff changeset
3235 defsubr (&Smatching_paren);
32506
a85522b7799c (Fstring_to_syntax): New function extracted from Fmodify_syntax_entry.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32496
diff changeset
3236 defsubr (&Sstring_to_syntax);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3237 defsubr (&Smodify_syntax_entry);
40663
046e69b1b128 (describe_syntax): New wrapper.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40656
diff changeset
3238 defsubr (&Sinternal_describe_syntax_value);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3239
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3240 defsubr (&Sforward_word);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3241
17464
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
3242 defsubr (&Sskip_chars_forward);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
3243 defsubr (&Sskip_chars_backward);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
3244 defsubr (&Sskip_syntax_forward);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
3245 defsubr (&Sskip_syntax_backward);
36483a1ada24 (SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table'
Richard M. Stallman <rms@gnu.org>
parents: 17126
diff changeset
3246
1998
656f4297962e (describe_syntax_1): Delete excess arg to describe_vector.
Richard M. Stallman <rms@gnu.org>
parents: 1394
diff changeset
3247 defsubr (&Sforward_comment);
163
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3248 defsubr (&Sscan_lists);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3249 defsubr (&Sscan_sexps);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3250 defsubr (&Sbackward_prefix_chars);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3251 defsubr (&Sparse_partial_sexp);
0f3996cb4ae5 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3252 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52213
diff changeset
3253
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52213
diff changeset
3254 /* arch-tag: 3e297b9f-088e-4b64-8f4c-fb0b3443e412
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52213
diff changeset
3255 (do not change this comment) */