Commit fbb3da77 authored by Stefan Monnier's avatar Stefan Monnier

* src/syntax.c (back_comment): Detect the case where a 1-char comment

starter is also the 2nd char of a 2-char comment ender.
parent c9805d23
2010-09-21 Stefan Monnier <monnier@iro.umontreal.ca>
* syntax.c (back_comment): Detect the case where a 1-char comment
starter is also the 2nd char of a 2-char comment ender.
2010-09-17 Jan Djärv <jan.h.d@swipnet.se> 2010-09-17 Jan Djärv <jan.h.d@swipnet.se>
* gtkutil.c (xg_tool_bar_menu_proxy): Set gtk-menu-items to TRUE. * gtkutil.c (xg_tool_bar_menu_proxy): Set gtk-menu-items to TRUE.
......
...@@ -512,6 +512,7 @@ back_comment (from, from_byte, stop, comnested, comstyle, charpos_ptr, bytepos_p ...@@ -512,6 +512,7 @@ back_comment (from, from_byte, stop, comnested, comstyle, charpos_ptr, bytepos_p
{ {
int temp_byte, prev_syntax; int temp_byte, prev_syntax;
int com2start, com2end; int com2start, com2end;
int comstart;
/* Move back and examine a character. */ /* Move back and examine a character. */
DEC_BOTH (from, from_byte); DEC_BOTH (from, from_byte);
...@@ -530,7 +531,8 @@ back_comment (from, from_byte, stop, comnested, comstyle, charpos_ptr, bytepos_p ...@@ -530,7 +531,8 @@ back_comment (from, from_byte, stop, comnested, comstyle, charpos_ptr, bytepos_p
|| SYNTAX_FLAGS_COMMENT_NESTED (syntax)) == comnested); || SYNTAX_FLAGS_COMMENT_NESTED (syntax)) == comnested);
com2end = (SYNTAX_FLAGS_COMEND_FIRST (syntax) com2end = (SYNTAX_FLAGS_COMEND_FIRST (syntax)
&& SYNTAX_FLAGS_COMEND_SECOND (prev_syntax)); && SYNTAX_FLAGS_COMEND_SECOND (prev_syntax));
comstart = (com2start || code == Scomment);
/* Nasty cases with overlapping 2-char comment markers: /* Nasty cases with overlapping 2-char comment markers:
- snmp-mode: -- c -- foo -- c -- - snmp-mode: -- c -- foo -- c --
--- c -- --- c --
...@@ -541,15 +543,16 @@ back_comment (from, from_byte, stop, comnested, comstyle, charpos_ptr, bytepos_p ...@@ -541,15 +543,16 @@ back_comment (from, from_byte, stop, comnested, comstyle, charpos_ptr, bytepos_p
/// */ /// */
/* If a 2-char comment sequence partly overlaps with another, /* If a 2-char comment sequence partly overlaps with another,
we don't try to be clever. */ we don't try to be clever. E.g. |*| in C, or }% in modes that
if (from > stop && (com2end || com2start)) have %..\n and %{..}%. */
if (from > stop && (com2end || comstart))
{ {
int next = from, next_byte = from_byte, next_c, next_syntax; int next = from, next_byte = from_byte, next_c, next_syntax;
DEC_BOTH (next, next_byte); DEC_BOTH (next, next_byte);
UPDATE_SYNTAX_TABLE_BACKWARD (next); UPDATE_SYNTAX_TABLE_BACKWARD (next);
next_c = FETCH_CHAR_AS_MULTIBYTE (next_byte); next_c = FETCH_CHAR_AS_MULTIBYTE (next_byte);
next_syntax = SYNTAX_WITH_FLAGS (next_c); next_syntax = SYNTAX_WITH_FLAGS (next_c);
if (((com2start || comnested) if (((comstart || comnested)
&& SYNTAX_FLAGS_COMEND_SECOND (syntax) && SYNTAX_FLAGS_COMEND_SECOND (syntax)
&& SYNTAX_FLAGS_COMEND_FIRST (next_syntax)) && SYNTAX_FLAGS_COMEND_FIRST (next_syntax))
|| ((com2end || comnested) || ((com2end || comnested)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment