emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r111198: * lisp/emacs-lisp/eieio.el:


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r111198: * lisp/emacs-lisp/eieio.el: Prettier object pretty-printing.
Date: Tue, 11 Dec 2012 21:16:05 -0500
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111198
fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13115
author: Jonas Bernoulli <address@hidden>
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Tue 2012-12-11 21:16:05 -0500
message:
  * lisp/emacs-lisp/eieio.el: Prettier object pretty-printing.
  (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.
modified:
  lisp/ChangeLog
  lisp/emacs-lisp/eieio.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-12-11 18:52:31 +0000
+++ b/lisp/ChangeLog    2012-12-12 02:16:05 +0000
@@ -1,3 +1,13 @@
+2012-12-12  Jonas Bernoulli  <address@hidden>
+
+       * 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  <address@hidden>
 
        * mail/emacsbug.el (report-emacs-bug): Move the intangible text to

=== modified file 'lisp/emacs-lisp/eieio.el'
--- a/lisp/emacs-lisp/eieio.el  2012-10-25 20:13:16 +0000
+++ b/lisp/emacs-lisp/eieio.el  2012-12-12 02:16:05 +0000
@@ -2850,28 +2850,36 @@
                (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 @@
       (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 ")")))
 
 


reply via email to

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