emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r105349: Implement ## reader macro


From: Andreas Schwab
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r105349: Implement ## reader macro
Date: Thu, 28 Jul 2011 22:23:19 +0200
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 105349
committer: Andreas Schwab <address@hidden>
branch nick: emacs
timestamp: Thu 2011-07-28 22:23:19 +0200
message:
  Implement ## reader macro
  
  * src/lread.c (read1): Read ## as empty symbol.
  
  * src/print.c (print_object): Print empty symbol as ##.
modified:
  src/ChangeLog
  src/lread.c
  src/print.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-07-28 18:50:05 +0000
+++ b/src/ChangeLog     2011-07-28 20:23:19 +0000
@@ -1,3 +1,9 @@
+2011-07-28  Andreas Schwab  <address@hidden>
+
+       * print.c (print_object): Print empty symbol as ##.
+
+       * lread.c (read1): Read ## as empty symbol.
+
 2011-07-28  Alp Aker  <address@hidden>
 
        * nsfns.m (x_set_foreground_color): Set f->foreground_pixel when

=== modified file 'src/lread.c'
--- a/src/lread.c       2011-07-19 20:33:28 +0000
+++ b/src/lread.c       2011-07-28 20:23:19 +0000
@@ -2670,6 +2670,9 @@
            }
          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')
        {

=== modified file 'src/print.c'
--- a/src/print.c       2011-07-07 01:32:56 +0000
+++ b/src/print.c       2011-07-28 20:23:19 +0000
@@ -1536,13 +1536,19 @@
        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 @@
              {
                if (c == '\"' || c == '\\' || c == '\''
                    || c == ';' || c == '#' || c == '(' || c == ')'
-                   || c == ',' || c =='.' || c == '`'
+                   || c == ',' || c == '.' || c == '`'
                    || c == '[' || c == ']' || c == '?' || c <= 040
                    || confusing)
                  PRINTCHAR ('\\'), confusing = 0;


reply via email to

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