0.8.8.27:
[sbcl.git] / src / code / print.lisp
index 7cd5d36..d27924a 100644 (file)
 ;;; :DOWNCASE          :CAPITALIZE
 (defun output-capitalize-symbol (pname stream)
   (declare (simple-string pname))
-  (let ((prev-not-alpha t)
+  (let ((prev-not-alphanum t)
        (up (eq (readtable-case *readtable*) :upcase)))
     (dotimes (i (length pname))
       (let ((char (char pname i)))
        (write-char (if up
-                       (if (or prev-not-alpha (lower-case-p char))
+                       (if (or prev-not-alphanum (lower-case-p char))
                            char
                            (char-downcase char))
-                       (if prev-not-alpha
+                       (if prev-not-alphanum
                            (char-upcase char)
                            char))
                    stream)
-       (setq prev-not-alpha (not (alpha-char-p char)))))))
+       (setq prev-not-alphanum (not (alphanumericp char)))))))
 
 ;;; called when:
 ;;; READTABLE-CASE     *PRINT-CASE*
       (2 (write-char #\b stream))
       (8 (write-char #\o stream))
       (16 (write-char #\x stream))
-      (t (write *print-base* :stream stream :radix nil :base 10)))
-    (write-char #\r stream))
+      (t (write *print-base* :stream stream :radix nil :base 10)
+        (write-char #\r stream))))
   (let ((*print-radix* nil))
     (output-integer (numerator ratio) stream)
     (write-char #\/ stream)
 ;;; the character name or the character in the #\char format.
 (defun output-character (char stream)
   (if (or *print-escape* *print-readably*)
-      (let ((name (char-name char)))
+      (let ((graphicp (graphic-char-p char))
+           (name (char-name char)))
        (write-string "#\\" stream)
-       (if name
+       (if (and name (not graphicp))
            (quote-string name stream)
            (write-char char stream)))
       (write-char char stream)))