changeset 18079:5fbb5aef5649

(back_comment): Detect 2-char comment starts properly. New arg COMSTYLE; callers changed.
author Richard M. Stallman <rms@gnu.org>
date Sat, 31 May 1997 18:16:22 +0000
parents cd5f9bda791e
children 55e03c524041
files src/syntax.c
diffstat 1 files changed, 15 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/syntax.c	Sat May 31 08:34:13 1997 +0000
+++ b/src/syntax.c	Sat May 31 18:16:22 1997 +0000
@@ -341,8 +341,8 @@
    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 @@
   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 @@
 			
       /* 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 @@
 		  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 @@
 		  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,