aboutsummaryrefslogtreecommitdiffstats
path: root/src/syntax.c
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1997-05-31 18:16:22 +0000
committerRichard M. Stallman <[email protected]>1997-05-31 18:16:22 +0000
commitea315ed6e49d61f23496698a9b871119d6f35b12 (patch)
tree69f686e43f1e045416432a44d6d3b6bd018dc4b4 /src/syntax.c
parent5509c7ff85ea8d894338e507ab9c981cae1e5941 (diff)
(back_comment): Detect 2-char comment starts properly.
New arg COMSTYLE; callers changed.
Diffstat (limited to 'src/syntax.c')
-rw-r--r--src/syntax.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/syntax.c b/src/syntax.c
index 27cbffd285..ed664805ec 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -341,8 +341,8 @@ find_defun_start (pos)
the search was not successful). */
static int
-back_comment (from, stop)
- int from, stop;
+back_comment (from, stop, comstyle)
+ int from, stop, comstyle;
{
/* Look back, counting the parity of string-quotes,
and recording the comment-starters seen.
@@ -361,7 +361,7 @@ back_comment (from, stop)
int comstart_parity = 0;
int scanstart = from - 1;
register enum syntaxcode code;
- int c, comstyle = 0;
+ int c;
/* At beginning of range to scan, we're outside of strings;
that determines quote parity to the comment-end. */
@@ -388,10 +388,16 @@ back_comment (from, stop)
/* If this char starts a 2-char comment start sequence,
treat it like a 1-char comment starter. */
- if (from < scanstart && SYNTAX_COMSTART_FIRST (c)
- && SYNTAX_COMSTART_SECOND (FETCH_CHAR (from + 1))
- && comstyle == SYNTAX_COMMENT_STYLE (FETCH_CHAR (from + 1)))
- code = Scomment;
+ if (from < scanstart && SYNTAX_COMSTART_SECOND (c)
+ && SYNTAX_COMSTART_FIRST (FETCH_CHAR (from - 1))
+ && comstyle == SYNTAX_COMMENT_STYLE (c))
+ {
+ code = Scomment;
+ DEC_POS (from);
+ /* This is apparently the best we can do: */
+ UPDATE_SYNTAX_TABLE_BACKWARD (from);
+ c = FETCH_CHAR (from);
+ }
/* Ignore escaped characters. */
if (char_quoted (from))
@@ -1585,7 +1591,7 @@ between them, return t; otherwise return nil.")
break;
}
#endif /* 0 */
- found = back_comment (from, stop);
+ found = back_comment (from, stop, comstyle);
if (found != -1) from = found;
#if 0
/* Look back, counting the parity of string-quotes,
@@ -2032,7 +2038,7 @@ scan_lists (from, count, depth, sexpflag)
break;
}
#endif /* 0 */
- found = back_comment (from, stop);
+ found = back_comment (from, stop, comstyle);
if (found != -1) from = found;
#if 0
/* Look back, counting the parity of string-quotes,