]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/eieio.el: Prettier object pretty-printing.
authorJonas Bernoulli <jonas@bernoul.li>
Wed, 12 Dec 2012 02:16:05 +0000 (21:16 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 12 Dec 2012 02:16:05 +0000 (21:16 -0500)
(eieio-override-prin1): Don't quote kewords and booleans.
(object-write) <eieio-default-superclass>: Don't put closing parens
on new line, avoid needless empty lines, align values that are objects
with the slot keyword (instead of beginning on the same line).
(eieio-list-prin1): Align value with slot keyword; increase
eieio-print-depth before printing members of the list.

Fixes: debbugs:13115
lisp/ChangeLog
lisp/emacs-lisp/eieio.el

index d6d7b18955eb0e8319cb03232b54637207634b66..49e129cd77ac5578b39a1cf8fa160b2eada54466 100644 (file)
@@ -1,3 +1,13 @@
+2012-12-12  Jonas Bernoulli  <jonas@bernoul.li>
+
+       * lisp/emacs-lisp/eieio.el: Prettier object pretty-printing (bug#13115).
+       (eieio-override-prin1): Don't quote kewords and booleans.
+       (object-write) <eieio-default-superclass>: Don't put closing parens
+       on new line, avoid needless empty lines, align values that are objects
+       with the slot keyword (instead of beginning on the same line).
+       (eieio-list-prin1): Align value with slot keyword; increase
+       eieio-print-depth before printing members of the list.
+
 2012-12-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * mail/emacsbug.el (report-emacs-bug): Move the intangible text to
index 3f7b49bde255b4dbb708291711894fa9800baa94..ebc35f6237cab2b5ff583e76f691d9d5d6f6e909 100644 (file)
@@ -2850,28 +2850,36 @@ this object."
                (v (eieio-oref this (car publa)))
                )
            (unless (or (not i) (equal v (car publd)))
+             (unless (bolp)
+               (princ "\n"))
              (princ (make-string (* eieio-print-depth 2) ? ))
              (princ (symbol-name i))
-             (princ " ")
              (if (car publp)
                  ;; Use our public printer
-                 (funcall (car publp) v)
+                 (progn
+                   (princ " ")
+                   (funcall (car publp) v))
                ;; Use our generic override prin1 function.
-               (eieio-override-prin1 v))
-             (princ "\n"))))
+               (princ (if (or (eieio-object-p v)
+                               (eieio-object-p (car-safe v)))
+                           "\n" " "))
+               (eieio-override-prin1 v)))))
        (setq publa (cdr publa) publd (cdr publd)
-             publp (cdr publp)))
-      (princ (make-string (* eieio-print-depth 2) ? )))
-    (princ ")\n")))
+             publp (cdr publp))))
+    (princ ")")
+    (when (= eieio-print-depth 0)
+      (princ "\n"))))
 
 (defun eieio-override-prin1 (thing)
   "Perform a `prin1' on THING taking advantage of object knowledge."
   (cond ((eieio-object-p thing)
         (object-write thing))
-       ((listp thing)
+       ((consp thing)
         (eieio-list-prin1 thing))
        ((class-p thing)
         (princ (class-name thing)))
+       ((or (keywordp thing) (booleanp thing))
+        (prin1 thing))
        ((symbolp thing)
         (princ (concat "'" (symbol-name thing))))
        (t (prin1 thing))))
@@ -2882,16 +2890,16 @@ this object."
       (progn
        (princ "'")
        (prin1 list))
-    (princ "(list ")
-    (if (eieio-object-p (car list)) (princ "\n "))
-    (while list
-      (if (eieio-object-p (car list))
-         (object-write (car list))
-       (princ "'")
-       (prin1 (car list)))
-      (princ " ")
-      (setq list (cdr list)))
     (princ (make-string (* eieio-print-depth 2) ? ))
+    (princ "(list")
+    (let ((eieio-print-depth (1+ eieio-print-depth)))
+      (while list
+       (princ "\n")
+       (if (eieio-object-p (car list))
+           (object-write (car list))
+         (princ (make-string (* eieio-print-depth 2) ? ))
+         (eieio-override-prin1 (car list)))
+       (setq list (cdr list))))
     (princ ")")))
 
 \f