]> git.eshelyaron.com Git - emacs.git/commitdiff
(read_escape): Interpret \s as a SPACE character, except
authorKim F. Storm <storm@cua.dk>
Thu, 13 Feb 2003 12:44:57 +0000 (12:44 +0000)
committerKim F. Storm <storm@cua.dk>
Thu, 13 Feb 2003 12:44:57 +0000 (12:44 +0000)
for \s-X in a character constant which still is the super modifier.
(read1): Signal an `invalid read syntax' error if a character
constant is immediately followed by a digit or symbol character.

src/ChangeLog
src/lread.c

index d849ecb49e3ff98d48ba637892c0385eddb52f1c..bf03f9437860a432a4cf5ba43d7fcc405e36262a 100644 (file)
@@ -1,5 +1,10 @@
 2003-02-13  Kim F. Storm  <storm@cua.dk>
 
+       * lread.c (read_escape): Interpret \s as a SPACE character, except
+       for \s-X in a character constant which still is the super modifier.
+       (read1): Signal an `invalid read syntax' error if a character
+       constant is immediately followed by a digit or symbol character.
+
        * search.c (Fmatch_data): Doc fix.  Explicitly state that
        match-data is undefined if last search failed.
 
index e32f669ecf20d39ca1a2830d2eed3b5ad4346091..228a60075dc7a7fd851bb5a68a429254882282da 100644 (file)
@@ -1697,9 +1697,13 @@ read_escape (readcharfun, stringp, byterep)
       return c | alt_modifier;
 
     case 's':
+      if (stringp)
+       return ' ';
       c = READCHAR;
-      if (c != '-')
-       error ("Invalid escape character syntax");
+      if (c != '-') {
+       UNREAD (c);
+       return ' ';
+      }
       c = READCHAR;
       if (c == '\\')
        c = read_escape (readcharfun, 0, byterep);
@@ -2247,6 +2251,7 @@ read1 (readcharfun, pch, first_in_list)
     case '?':
       {
        int discard;
+       int nextc;
 
        c = READCHAR;
        if (c < 0)
@@ -2257,6 +2262,15 @@ read1 (readcharfun, pch, first_in_list)
        else if (BASE_LEADING_CODE_P (c))
          c = read_multibyte (c, readcharfun);
 
+       nextc = READCHAR;
+       UNREAD (nextc);
+       if (nextc > 040
+           && !(nextc == '?' 
+                || nextc == '\"' || nextc == '\'' || nextc == ';'
+                || nextc == '(' || nextc == ')'
+                || nextc == '[' || nextc == ']' || nextc == '#'))
+         Fsignal (Qinvalid_read_syntax, Fcons (make_string ("?", 1), Qnil));
+
        return make_number (c);
       }