diff options
-rw-r--r-- | src/syntax.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/syntax.c b/src/syntax.c index 41a236eb5bd..8d7f908865f 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -1511,9 +1511,20 @@ scan_sexps_forward (stateptr, from, end, targetdepth, curlevel->prev = curlevel->last; break; + startincomment: + if (commentstop) + goto done; + if (from != BEGV) + { + /* Enter the loop in the middle so that we find + a 2-char comment ender if we start in the middle of it. */ + prev = FETCH_CHAR (from - 1); + goto startincomment_1; + } + /* At beginning of buffer, enter the loop the ordinary way. */ + case Scomment: state.incomment = 1; - startincomment: if (commentstop) goto done; while (1) @@ -1527,6 +1538,7 @@ scan_sexps_forward (stateptr, from, end, targetdepth, encountered. */ break; from++; + startincomment_1: if (from < end && SYNTAX_COMEND_FIRST (prev) && SYNTAX_COMEND_SECOND (FETCH_CHAR (from)) && SYNTAX_COMMENT_STYLE (prev) == state.comstyle) |