]> code.delx.au - gnu-emacs/blobdiff - src/syntax.c
(is_simple_dialog, simple_dialog_show): New functions.
[gnu-emacs] / src / syntax.c
index 651406230325fb109461f6c2e5367f34f063c810..f282ed3a262eabb1b369d8b76f15cef3f5e66bd3 100644 (file)
@@ -1,13 +1,13 @@
 /* GNU Emacs routines to deal with syntax tables; also word and list parsing.
    Copyright (C) 1985, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2001,
-                 2002, 2003, 2004, 2005, 2006, 2007
+                 2002, 2003, 2004, 2005, 2006, 2007, 2008
                  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
 GNU Emacs is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
@@ -1299,20 +1299,20 @@ scan_words (from, count)
          script = CHAR_TABLE_REF (Vchar_script_table, ch1);
          while (1)
            {
-             int temp_byte;
-
              if (from == beg)
                break;
-             temp_byte = dec_bytepos (from_byte);
+             DEC_BOTH (from, from_byte);
              UPDATE_SYNTAX_TABLE_BACKWARD (from);
-             ch0 = FETCH_CHAR_AS_MULTIBYTE (temp_byte);
+             ch0 = FETCH_CHAR_AS_MULTIBYTE (from_byte);
              code = SYNTAX (ch0);
              if ((code != Sword
                   && (! words_include_escapes
                       || (code != Sescape && code != Scharquote)))
                  || ! EQ (CHAR_TABLE_REF (Vchar_script_table, ch0), script))
-               break;
-             DEC_BOTH (from, from_byte);
+               {
+                 INC_BOTH (from, from_byte);
+                 break;
+               }
              ch1 = ch0;
            }
        }
@@ -1324,7 +1324,7 @@ scan_words (from, count)
   return from;
 }
 
-DEFUN ("forward-word", Fforward_word, Sforward_word, 0, 1, "p",
+DEFUN ("forward-word", Fforward_word, Sforward_word, 0, 1, "^p",
        doc: /* Move point forward ARG words (backward if ARG is negative).
 Normally returns t.
 If an edge of the buffer or a field boundary is reached, point is left there
@@ -2031,13 +2031,13 @@ skip_syntaxes (forwardp, string, lim)
                    p = GPT_ADDR;
                    stop = endp;
                  }
+               UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
                prev_p = p;
                while (--p >= stop && ! CHAR_HEAD_P (*p));
                c = STRING_CHAR (p, MAX_MULTIBYTE_LENGTH);
                if (! fastmap[(int) SYNTAX (c)])
                  break;
                pos--, pos_byte -= prev_p - p;
-               UPDATE_SYNTAX_TABLE_BACKWARD (pos);
              }
          }
        else
@@ -2051,10 +2051,10 @@ skip_syntaxes (forwardp, string, lim)
                    p = GPT_ADDR;
                    stop = endp;
                  }
+               UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
                if (! fastmap[(int) SYNTAX (p[-1])])
                  break;
                p--, pos--, pos_byte--;
-               UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
              }
          }
       }
@@ -2501,7 +2501,8 @@ scan_lists (from, count, depth, sexpflag)
            {
            case Sescape:
            case Scharquote:
-             if (from == stop) goto lose;
+             if (from == stop)
+               goto lose;
              INC_BOTH (from, from_byte);
              /* treat following character as a word constituent */
            case Sword:
@@ -2520,7 +2521,8 @@ scan_lists (from, count, depth, sexpflag)
                    case Scharquote:
                    case Sescape:
                      INC_BOTH (from, from_byte);
-                     if (from == stop) goto lose;
+                     if (from == stop)
+                       goto lose;
                      break;
                    case Sword:
                    case Ssymbol:
@@ -2586,7 +2588,8 @@ scan_lists (from, count, depth, sexpflag)
              stringterm = FETCH_CHAR_AS_MULTIBYTE (temp_pos);
              while (1)
                {
-                 if (from >= stop) goto lose;
+                 if (from >= stop)
+                   goto lose;
                  UPDATE_SYNTAX_TABLE_FORWARD (from);
                  c = FETCH_CHAR_AS_MULTIBYTE (from_byte);
                  if (code == Sstring
@@ -2615,7 +2618,8 @@ scan_lists (from, count, depth, sexpflag)
        }
 
       /* Reached end of buffer.  Error if within object, return nil if between */
-      if (depth) goto lose;
+      if (depth)
+       goto lose;
 
       immediate_quit = 0;
       return Qnil;
@@ -2750,7 +2754,8 @@ scan_lists (from, count, depth, sexpflag)
            case Sstring_fence:
              while (1)
                {
-                 if (from == stop) goto lose;
+                 if (from == stop)
+                   goto lose;
                  DEC_BOTH (from, from_byte);
                  UPDATE_SYNTAX_TABLE_BACKWARD (from);
                  if (!char_quoted (from, from_byte)
@@ -2765,7 +2770,8 @@ scan_lists (from, count, depth, sexpflag)
              stringterm = FETCH_CHAR_AS_MULTIBYTE (from_byte);
              while (1)
                {
-                 if (from == stop) goto lose;
+                 if (from == stop)
+                   goto lose;
                  DEC_BOTH (from, from_byte);
                  UPDATE_SYNTAX_TABLE_BACKWARD (from);
                  if (!char_quoted (from, from_byte)
@@ -2783,7 +2789,8 @@ scan_lists (from, count, depth, sexpflag)
        }
 
       /* Reached start of buffer.  Error if within object, return nil if between */
-      if (depth) goto lose;
+      if (depth)
+       goto lose;
 
       immediate_quit = 0;
       return Qnil;