]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix printing symbols
authorGerd Möllmann <gerd@gnu.org>
Mon, 17 Oct 2022 13:24:21 +0000 (15:24 +0200)
committerGerd Möllmann <gerd@gnu.org>
Mon, 17 Oct 2022 13:24:21 +0000 (15:24 +0200)
src/print.c

index 69b82659b3e147259ab3a139d288027f4ecb0688..52a86ebf15b05ebbb41727ead600e6b60ca32ce0 100644 (file)
@@ -2167,10 +2167,8 @@ static bool
 must_escape_p (int c, int ichar)
 {
   if (c == '\"' || c == '\\' || c == '\''
-      || (ichar == 0
-         && (c == '+' || c == '-' || c == '?' || c == '.'))
       || c == ';' || c == '#' || c == '(' || c == ')'
-      || c == ',' || c == '`' || c == '|'
+      || c == ',' || c == '`' || c == ':'
       || c == '[' || c == ']' || c <= 040
       || c == NO_BREAK_SPACE)
     return true;
@@ -2185,9 +2183,13 @@ looks_like_number_p (Lisp_Object name)
   const char *p = (const char *) SDATA (name);
   const bool signedp = *p == '-' || *p == '+';
   ptrdiff_t len;
-  return ((c_isdigit (p[signedp]) || p[signedp] == '.')
+  return (((c_isdigit (p[signedp]) || p[signedp] == '.')
          && !NILP (string_to_number (p, 10, &len))
-         && len == SBYTES (name));
+         && len == SBYTES (name))
+         /* We don't escape "." or "?" (unless they're the first
+            character in the symbol name).  */
+         || *p == '?'
+         || *p == '.');
 }
 
 /* Print string NAME like a symbol name.  */