emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r99639: Cleanup setup of gl_state in


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r99639: Cleanup setup of gl_state in various parts of the code.
Date: Wed, 10 Mar 2010 09:45:21 -0500
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 99639
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Wed 2010-03-10 09:45:21 -0500
message:
  Cleanup setup of gl_state in various parts of the code.
  * syntax.h (SETUP_BUFFER_SYNTAX_TABLE): New macro.
  (SETUP_SYNTAX_TABLE, SETUP_SYNTAX_TABLE_FOR_OBJECT):
  * syntax.c (find_defun_start, Fchar_syntax, Fmatching_paren, skip_chars):
  * regex.c (regex_compile): Use it.
  (re_compile_pattern): Don't set gl_state.current_syntax_table since
  it's now set in regex_compile when/if we need it.
modified:
  src/ChangeLog
  src/keyboard.c
  src/regex.c
  src/syntax.c
  src/syntax.h
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-03-05 23:08:18 +0000
+++ b/src/ChangeLog     2010-03-10 14:45:21 +0000
@@ -1,3 +1,14 @@
+2010-03-10  Stefan Monnier  <address@hidden>
+
+       Cleanup setup of gl_state in various parts of the code.
+       * syntax.h (SETUP_BUFFER_SYNTAX_TABLE): New macro.
+       (SETUP_SYNTAX_TABLE, SETUP_SYNTAX_TABLE_FOR_OBJECT):
+       * syntax.c (find_defun_start, Fchar_syntax, Fmatching_paren)
+       (skip_chars):
+       * regex.c (regex_compile): Use it.
+       (re_compile_pattern): Don't set gl_state.current_syntax_table since
+       it's now set in regex_compile when/if we need it.
+
 2010-03-05  Stefan Monnier  <address@hidden>
 
        Make it possible to C-g in a tight bytecode loop again (bug#5680).

=== modified file 'src/keyboard.c'
--- a/src/keyboard.c    2010-01-13 08:35:10 +0000
+++ b/src/keyboard.c    2010-03-10 14:45:21 +0000
@@ -11235,6 +11235,7 @@
          GCPRO4 (saved.object, saved.global_code,
                  saved.current_syntax_table, saved.old_prop);
          Fsignal (Qquit, Qnil);
+         /* FIXME: AFAIK, `quit' can never return, so this code is dead!  */
          gl_state = saved;
          UNGCPRO;
        }

=== modified file 'src/regex.c'
--- a/src/regex.c       2010-03-05 19:54:39 +0000
+++ b/src/regex.c       2010-03-10 14:45:21 +0000
@@ -3070,7 +3070,7 @@
                           syntax-table for ASCII chars, while the other chars
                           will obey syntax-table properties.  It's not ideal,
                           but it's the way it's been done until now.  */
-                       SETUP_SYNTAX_TABLE (BEGV, 0);
+                       SETUP_BUFFER_SYNTAX_TABLE ();
 
                        for (ch = 0; ch < 256; ++ch)
                          {
@@ -4496,7 +4496,7 @@
   anchored_start = (bufp->buffer[0] == begline);
 
 #ifdef emacs
-  gl_state.object = re_match_object;
+  gl_state.object = re_match_object; /* Used by SYNTAX_TABLE_BYTE_TO_CHAR. */
   {
     int charpos = SYNTAX_TABLE_BYTE_TO_CHAR (POS_AS_IN_BUFFER (startpos));
 
@@ -5099,7 +5099,7 @@
 
 #ifdef emacs
   int charpos;
-  gl_state.object = re_match_object;
+  gl_state.object = re_match_object; /* Used by SYNTAX_TABLE_BYTE_TO_CHAR. */
   charpos = SYNTAX_TABLE_BYTE_TO_CHAR (POS_AS_IN_BUFFER (pos));
   SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, charpos, 1);
 #endif
@@ -6504,10 +6504,6 @@
 {
   reg_errcode_t ret;
 
-#ifdef emacs
-  gl_state.current_syntax_table = current_buffer->syntax_table;
-#endif
-
   /* GNU code is written to assume at least RE_NREGS registers will be set
      (and at least one extra will be -1).  */
   bufp->regs_allocated = REGS_UNALLOCATED;

=== modified file 'src/syntax.c'
--- a/src/syntax.c      2010-03-05 18:42:38 +0000
+++ b/src/syntax.c      2010-03-10 14:45:21 +0000
@@ -385,8 +385,7 @@
   /* We optimize syntax-table lookup for rare updates.  Thus we accept
      only those `^\s(' which are good in global _and_ text-property
      syntax-tables.  */
-  gl_state.current_syntax_table = current_buffer->syntax_table;
-  gl_state.use_global = 0;
+  SETUP_BUFFER_SYNTAX_TABLE ();
   while (PT > BEGV)
     {
       int c;
@@ -401,8 +400,7 @@
          if (SYNTAX (c) == Sopen)
            break;
          /* Now fallback to the default value.  */
-         gl_state.current_syntax_table = current_buffer->syntax_table;
-         gl_state.use_global = 0;
+         SETUP_BUFFER_SYNTAX_TABLE ();
        }
       /* Move to beg of previous line.  */
       scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -2, 1);
@@ -860,11 +858,9 @@
      Lisp_Object character;
 {
   int char_int;
-  gl_state.current_syntax_table = current_buffer->syntax_table;
-
-  gl_state.use_global = 0;
   CHECK_NUMBER (character);
   char_int = XINT (character);
+  SETUP_BUFFER_SYNTAX_TABLE ();
   return make_number (syntax_code_spec[(int) SYNTAX (char_int)]);
 }
 
@@ -874,10 +870,9 @@
      Lisp_Object character;
 {
   int char_int, code;
-  gl_state.current_syntax_table = current_buffer->syntax_table;
-  gl_state.use_global = 0;
   CHECK_NUMBER (character);
   char_int = XINT (character);
+  SETUP_BUFFER_SYNTAX_TABLE ();
   code = SYNTAX (char_int);
   if (code == Sopen || code == Sclose)
     return SYNTAX_MATCH (char_int);
@@ -1752,7 +1747,7 @@
        let's initialize it manually.
        We ignore syntax-table text-properties for now, since that's
        what we've done in the past.  */
-    SETUP_SYNTAX_TABLE (BEGV, 0);
+    SETUP_BUFFER_SYNTAX_TABLE ();
     if (forwardp)
       {
        if (multibyte)

=== modified file 'src/syntax.h'
--- a/src/syntax.h      2010-01-13 08:35:10 +0000
+++ b/src/syntax.h      2010-03-10 14:45:21 +0000
@@ -245,6 +245,14 @@
         1)                                                     \
       : 0))
 
+/* This macro sets up the buffer-global syntax table.  */
+#define SETUP_BUFFER_SYNTAX_TABLE()                                    \
+do                                                                     \
+  {                                                                    \
+    gl_state.use_global = 0;                                           \
+    gl_state.current_syntax_table = current_buffer->syntax_table;      \
+  } while (0)
+
 /* This macro should be called with FROM at the start of forward
    search, or after the last position of the backward search.  It
    makes sure that the first char is picked up with correct table, so
@@ -256,12 +264,11 @@
 #define SETUP_SYNTAX_TABLE(FROM, COUNT)                                        
\
 do                                                                     \
   {                                                                    \
+    SETUP_BUFFER_SYNTAX_TABLE ();                                      \
     gl_state.b_property = BEGV;                                                
\
     gl_state.e_property = ZV + 1;                                      \
     gl_state.object = Qnil;                                            \
-    gl_state.use_global = 0;                                           \
     gl_state.offset = 0;                                               \
-    gl_state.current_syntax_table = current_buffer->syntax_table;      \
     if (parse_sexp_lookup_properties)                                  \
       if ((COUNT) > 0 || (FROM) > BEGV)                                        
\
         update_syntax_table ((COUNT) > 0 ? (FROM) : (FROM) - 1, (COUNT),\
@@ -279,6 +286,7 @@
 #define SETUP_SYNTAX_TABLE_FOR_OBJECT(OBJECT, FROM, COUNT)             \
 do                                                                     \
   {                                                                    \
+    SETUP_BUFFER_SYNTAX_TABLE ();                                      \
     gl_state.object = (OBJECT);                                                
\
     if (BUFFERP (gl_state.object))                                     \
       {                                                                        
\
@@ -305,8 +313,6 @@
        gl_state.e_property = 1 + SCHARS (gl_state.object);             \
        gl_state.offset = 0;                                            \
       }                                                                        
\
-    gl_state.use_global = 0;                                           \
-    gl_state.current_syntax_table = current_buffer->syntax_table;      \
     if (parse_sexp_lookup_properties)                                  \
       update_syntax_table (((FROM) + gl_state.offset                   \
                            + (COUNT > 0 ? 0 :  -1)),                   \


reply via email to

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