From 69e1c203e96afb6e95fdda422d00c07b0bcbf76c Mon Sep 17 00:00:00 2001 From: Jonas Bernoulli Date: Tue, 11 Dec 2012 21:16:05 -0500 Subject: [PATCH] * lisp/emacs-lisp/eieio.el: Prettier object pretty-printing. (eieio-override-prin1): Don't quote kewords and booleans. (object-write) : 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 | 10 ++++++++++ lisp/emacs-lisp/eieio.el | 42 ++++++++++++++++++++++++---------------- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d6d7b18955e..49e129cd77a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2012-12-12 Jonas Bernoulli + + * lisp/emacs-lisp/eieio.el: Prettier object pretty-printing (bug#13115). + (eieio-override-prin1): Don't quote kewords and booleans. + (object-write) : 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 * mail/emacsbug.el (report-emacs-bug): Move the intangible text to diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index 3f7b49bde25..ebc35f6237c 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el @@ -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 ")"))) -- 2.39.5