From 9a79b20c28f48ff640df50d74185b39acf0850a7 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Thu, 28 Jul 2011 22:23:19 +0200 Subject: [PATCH] Implement ## reader macro * src/lread.c (read1): Read ## as empty symbol. * src/print.c (print_object): Print empty symbol as ##. --- src/ChangeLog | 6 ++++++ src/lread.c | 3 +++ src/print.c | 12 +++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index f6f64f4211d..3eaa3d5eadd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2011-07-28 Andreas Schwab + + * print.c (print_object): Print empty symbol as ##. + + * lread.c (read1): Read ## as empty symbol. + 2011-07-28 Alp Aker * nsfns.m (x_set_foreground_color): Set f->foreground_pixel when diff --git a/src/lread.c b/src/lread.c index 0613ad037bf..78ff195e990 100644 --- a/src/lread.c +++ b/src/lread.c @@ -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') { diff --git a/src/print.c b/src/print.c index f1907a31465..35f89860843 100644 --- a/src/print.c +++ b/src/print.c @@ -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; -- 2.11.4.GIT