emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-23 r100054: * src/syntax.c (back_comm


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-23 r100054: * src/syntax.c (back_comment): Detect the case where a 1-char comment
Date: Tue, 21 Sep 2010 17:52:13 +0200
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 100054
committer: Stefan Monnier <address@hidden>
branch nick: emacs-23
timestamp: Tue 2010-09-21 17:52:13 +0200
message:
  * 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.
modified:
  src/ChangeLog
  src/syntax.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-09-17 09:58:44 +0000
+++ b/src/ChangeLog     2010-09-21 15:52:13 +0000
@@ -1,3 +1,8 @@
+2010-09-21  Stefan Monnier  <address@hidden>
+
+       * 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  <address@hidden>
 
        * gtkutil.c (xg_tool_bar_menu_proxy): Set gtk-menu-items to TRUE.

=== modified file 'src/syntax.c'
--- a/src/syntax.c      2010-03-05 18:42:38 +0000
+++ b/src/syntax.c      2010-09-21 15:52:13 +0000
@@ -512,6 +512,7 @@
     {
       int temp_byte, prev_syntax;
       int com2start, com2end;
+      int comstart;
 
       /* Move back and examine a character.  */
       DEC_BOTH (from, from_byte);
@@ -530,7 +531,8 @@
                       || SYNTAX_FLAGS_COMMENT_NESTED (syntax)) == comnested);
       com2end = (SYNTAX_FLAGS_COMEND_FIRST (syntax)
                 && SYNTAX_FLAGS_COMEND_SECOND (prev_syntax));
-
+      comstart = (com2start || code == Scomment);
+      
       /* Nasty cases with overlapping 2-char comment markers:
         - snmp-mode: -- c -- foo -- c --
                      --- c --
@@ -541,15 +543,16 @@
                      ///   */
 
       /* If a 2-char comment sequence partly overlaps with another,
-        we don't try to be clever.  */
-      if (from > stop && (com2end || com2start))
+        we don't try to be clever.  E.g. |*| in C, or }% in modes that
+        have %..\n and %{..}%.  */
+      if (from > stop && (com2end || comstart))
        {
          int next = from, next_byte = from_byte, next_c, next_syntax;
          DEC_BOTH (next, next_byte);
          UPDATE_SYNTAX_TABLE_BACKWARD (next);
          next_c = FETCH_CHAR_AS_MULTIBYTE (next_byte);
          next_syntax = SYNTAX_WITH_FLAGS (next_c);
-         if (((com2start || comnested)
+         if (((comstart || comnested)
               && SYNTAX_FLAGS_COMEND_SECOND (syntax)
               && SYNTAX_FLAGS_COMEND_FIRST (next_syntax))
              || ((com2end || comnested)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]