]> git.eshelyaron.com Git - emacs.git/commitdiff
Implement ## reader macro
authorAndreas Schwab <schwab@linux-m68k.org>
Thu, 28 Jul 2011 20:23:19 +0000 (22:23 +0200)
committerAndreas Schwab <schwab@linux-m68k.org>
Thu, 28 Jul 2011 20:23:19 +0000 (22:23 +0200)
* src/lread.c (read1): Read ## as empty symbol.

* src/print.c (print_object): Print empty symbol as ##.

src/ChangeLog
src/lread.c
src/print.c

index f6f64f4211d62fa93f38fa3e53cb59714e9cf1db..3eaa3d5eadd298c193d7e5cdf32dab91571d9997 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-28  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * print.c (print_object): Print empty symbol as ##.
+
+       * lread.c (read1): Read ## as empty symbol.
+
 2011-07-28  Alp Aker  <alp.tekin.aker@gmail.com>
 
        * nsfns.m (x_set_foreground_color): Set f->foreground_pixel when
index 0613ad037bfa6c2b16fd1dbc08665d8295807ab2..78ff195e9907322d0f7e1bde7933d49f6a325b5b 100644 (file)
@@ -2670,6 +2670,9 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
            }
          goto read_symbol;
        }
+      /* ## is the empty symbol.  */
+      if (c == '#')
+       return Fintern (build_string (""), Qnil);
       /* Reader forms that can reuse previously read objects.  */
       if (c >= '0' && c <= '9')
        {
index f1907a31465a13111eff1b860e4c32faaa34d924..35f898608433e81454da77a96c8818ca5b1faece 100644 (file)
@@ -1536,13 +1536,19 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
        else
          confusing = 0;
 
+       size_byte = SBYTES (name);
+
        if (! NILP (Vprint_gensym) && !SYMBOL_INTERNED_P (obj))
          {
            PRINTCHAR ('#');
            PRINTCHAR (':');
          }
-
-       size_byte = SBYTES (name);
+       else if (size_byte == 0)
+         {
+           PRINTCHAR ('#');
+           PRINTCHAR ('#');
+           break;
+         }
 
        for (i = 0, i_byte = 0; i_byte < size_byte;)
          {
@@ -1555,7 +1561,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
              {
                if (c == '\"' || c == '\\' || c == '\''
                    || c == ';' || c == '#' || c == '(' || c == ')'
-                   || c == ',' || c =='.' || c == '`'
+                   || c == ',' || c == '.' || c == '`'
                    || c == '[' || c == ']' || c == '?' || c <= 040
                    || confusing)
                  PRINTCHAR ('\\'), confusing = 0;