From unknown Fri Aug 15 16:24:09 2025 X-Loop: help-debbugs@gnu.org Subject: bug#13115: prettier pretty-printing for eieio Resent-From: Jonas Bernoulli Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 07 Dec 2012 16:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 13115 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 13115@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.135489934427019 (code B ref -1); Fri, 07 Dec 2012 16:56:01 +0000 Received: (at submit) by debbugs.gnu.org; 7 Dec 2012 16:55:44 +0000 Received: from localhost ([127.0.0.1]:59151 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Th1DD-00071k-Rc for submit@debbugs.gnu.org; Fri, 07 Dec 2012 11:55:44 -0500 Received: from eggs.gnu.org ([208.118.235.92]:52673) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Th1DA-00071c-Nr for submit@debbugs.gnu.org; Fri, 07 Dec 2012 11:55:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Th1Ci-0003xv-L2 for submit@debbugs.gnu.org; Fri, 07 Dec 2012 11:55:21 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-102.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, T_DKIM_INVALID, USER_IN_WHITELIST autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:42062) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Th1Ci-0003xq-Ir for submit@debbugs.gnu.org; Fri, 07 Dec 2012 11:55:12 -0500 Received: from eggs.gnu.org ([208.118.235.92]:35729) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Th1Cf-0006Z2-8q for bug-gnu-emacs@gnu.org; Fri, 07 Dec 2012 11:55:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Th1CX-0003ha-0x for bug-gnu-emacs@gnu.org; Fri, 07 Dec 2012 11:55:09 -0500 Received: from mail-ee0-f41.google.com ([74.125.83.41]:37958) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Th1CW-0003hL-N7 for bug-gnu-emacs@gnu.org; Fri, 07 Dec 2012 11:55:00 -0500 Received: by mail-ee0-f41.google.com with SMTP id d41so475596eek.0 for ; Fri, 07 Dec 2012 08:54:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:subject:user-agent:date:message-id:mime-version :content-type; bh=3LI7nu779fAf9x6i3IEsPqzJDRalJB94UL6cBwRtYk4=; b=RwpAloNYmdFBi/qXHiRA+cct+kfPmLWamDzSep4808QmwkJBfHsX5dTmfrI9HySyNO F2MjsiI1DBJrwl0X4MLH8/wvyCOkn/2bTVyfV3lKzWDCGLnuDPryI/h9ECTcDbSieBYI ZqvYaQy7dtSzUkawkBuNfIPrjP+fQ+tHwfTj5KTimT1P+cQ+Fu0taIbymwYQsFfBKSpx D/zZ7qFkmSwjJitDHRPnYP2uYCVXC+GFctzNZhlnyUPg7UtkrLvWZb+hfHUIcq6ywVQ7 iZBZYWccOF3fviFK2ERew507Utbzv3zpRbCcvCeOmfTsYZErAu1Q2d0HdDnqTjFlXYiC hxgg== Received: by 10.14.199.5 with SMTP id w5mr18599021een.31.1354899299730; Fri, 07 Dec 2012 08:54:59 -0800 (PST) Received: from lem (178-83-201-90.dynamic.hispeed.ch. [178.83.201.90]) by mx.google.com with ESMTPS id b2sm23674650eep.9.2012.12.07.08.54.52 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 07 Dec 2012 08:54:59 -0800 (PST) From: Jonas Bernoulli User-agent: mu4e 0.9.9.5-dev4; emacs 24.3.50.1 Date: Fri, 07 Dec 2012 17:54:51 +0100 Message-ID: <87vccd950k.fsf@bernoul.li> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -3.4 (---) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.1 (------) --=-=-= Content-Type: text/plain Hello The attached patch implements prettier pretty-printing in eieio. * don't quote keywords and booleans * don't insert needless newlines (empty lines, and before closing parents) * align values that are objects with the slot keyword instead of putting it's beginning on the same line as the slot keyword. * similar for lists of objects Prettier pp: ,---- | (eieio-pp-demo "top" | :keyword :keyword | :boolean nil | :object | (eieio-pp-demo "subsub" | :list '(a b c)) | :list '(a b c) | :object-list | (list | (eieio-pp-demo "sub" | :keyword :keyword | :object | (eieio-pp-demo "subsub" | :list '(a b c)) | :list '(a b c)) | 'non-object | (eieio-pp-demo "sub" | :keyword :keyword | :object | (eieio-pp-demo "subsub" | :list '(a b c)) | :list '(a b c)))) `---- Not so pretty pp: ,---- | (eieio-pp-demo "top" | :keyword ':keyword | :boolean 'nil | :object (eieio-pp-demo "subsub" | :list '(a b c) | ) | | :list '(a b c) | :object-list (list | (eieio-pp-demo "sub" | :keyword ':keyword | :object (eieio-pp-demo "subsub" | :list '(a b c) | ) | | :list '(a b c) | ) | 'non-object (eieio-pp-demo "sub" | :keyword ':keyword | :object (eieio-pp-demo "subsub" | :list '(a b c) | ) | | :list '(a b c) | ) | ) | ) `---- The demo code is also attached. I have used this code to save the metadata extracted from all packages on the Emacsmirror without any problems for several months now. Please consider merging this, thanks Jonas --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=prettier-eieio-pp.patch Content-Description: patch >From 290b21ae3c416dc7b4a86ad256ec6cf3f08cc429 Mon Sep 17 00:00:00 2001 From: Jonas Bernoulli Date: Fri, 7 Dec 2012 17:35:34 +0100 Subject: [PATCH] * 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. --- eieio.el | 47 +++++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/eieio.el b/eieio.el index 3f7b49b..f106f8c 100644 --- a/eieio.el +++ b/eieio.el @@ -2850,28 +2850,39 @@ this object." (v (eieio-oref this (car publa))) ) (unless (or (not i) (equal v (car publd))) + (unless (looking-back "\n") + (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")))) + (if (or (eieio-object-p v) + (and (listp v) + (eieio-object-p (car v)))) + (princ "\n") + (princ " ")) + (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) - (eieio-list-prin1 thing)) ((class-p thing) (princ (class-name thing))) + ((or (keywordp thing) + (booleanp thing)) + (prin1 thing)) + ((listp thing) + (eieio-list-prin1 thing)) ((symbolp thing) (princ (concat "'" (symbol-name thing)))) (t (prin1 thing)))) @@ -2882,16 +2893,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 ")"))) -- 1.8.0.1 --=-=-= Content-Type: application/emacs-lisp Content-Disposition: attachment; filename=eieio-pp-demo.el Content-Transfer-Encoding: quoted-printable Content-Description: demo (defclass eieio-pp-demo () ((keyword :initarg :keyword) (boolean :initarg :boolean) (object :initarg :object) (list :initarg :list) (object-list :initarg :object-list))) (setq object-subsub (eieio-pp-demo "subsub" :list '(a b c))) (setq object-sub (eieio-pp-demo "sub" :keyword :keyword :object object-subsub :list '(a b c))) (setq object-top (eieio-pp-demo "top" :keyword :keyword :boolean nil :object object-subsub :list '(a b c) :object-list (list object-sub 'non-object object-sub))) (let ((standard-output (current-buffer))) (insert "\n\n") (object-write object-top)) --=-=-=-- From unknown Fri Aug 15 16:24:09 2025 X-Loop: help-debbugs@gnu.org Subject: bug#13115: prettier pretty-printing for eieio Resent-From: Stefan Monnier Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 12 Dec 2012 02:18:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13115 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Jonas Bernoulli Cc: 13115@debbugs.gnu.org Received: via spool by 13115-submit@debbugs.gnu.org id=B13115.135527867229156 (code B ref 13115); Wed, 12 Dec 2012 02:18:01 +0000 Received: (at 13115) by debbugs.gnu.org; 12 Dec 2012 02:17:52 +0000 Received: from localhost ([127.0.0.1]:37840 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TibtQ-0007aC-71 for submit@debbugs.gnu.org; Tue, 11 Dec 2012 21:17:52 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:34200) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TibtN-0007a5-PW for 13115@debbugs.gnu.org; Tue, 11 Dec 2012 21:17:50 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu09soXOY/2dsb2JhbABEtBGBCIIVAQEEAVYjBQsLNBIUGA0kiBwFugmQRAOIQppxgViDBw X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="209660560" Received: from 108-161-115-152.dsl.teksavvy.com (HELO pastel.home) ([108.161.115.152]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 11 Dec 2012 21:17:05 -0500 Received: by pastel.home (Postfix, from userid 20848) id F01A75941F; Tue, 11 Dec 2012 21:17:04 -0500 (EST) From: Stefan Monnier Message-ID: References: <87vccd950k.fsf@bernoul.li> Date: Tue, 11 Dec 2012 21:17:04 -0500 In-Reply-To: <87vccd950k.fsf@bernoul.li> (Jonas Bernoulli's message of "Fri, 07 Dec 2012 17:54:51 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.5 (/) > The attached patch implements prettier pretty-printing in eieio. Thanks, installed (with (bolp) instead of (looking-back "\n"), especially since looking-back is grossly inefficient). Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 11 22:08:02 2012 Received: (at control) by debbugs.gnu.org; 12 Dec 2012 03:08:02 +0000 Received: from localhost ([127.0.0.1]:37886 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ticfy-0001IB-20 for submit@debbugs.gnu.org; Tue, 11 Dec 2012 22:08:02 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:39489) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ticfw-0001Hn-60 for control@debbugs.gnu.org; Tue, 11 Dec 2012 22:08:00 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu09soXOY/2dsb2JhbABEtBGBCIIRBQEFGT0zCzQSFBgNhgAHgigWugmNJoMeA4hCmnGBWIMH X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="209662201" Received: from 108-161-115-152.dsl.teksavvy.com (HELO pastel.home) ([108.161.115.152]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 11 Dec 2012 22:07:14 -0500 Received: by pastel.home (Postfix, from userid 20848) id 5A9FE5941F; Tue, 11 Dec 2012 22:07:13 -0500 (EST) From: Stefan Monnier To: control@debbugs.gnu.org Subject: Re: bug#13115: prettier pretty-printing for eieio Message-ID: References: <87vccd950k.fsf@bernoul.li> Date: Tue, 11 Dec 2012 22:07:13 -0500 In-Reply-To: (Stefan Monnier's message of "Tue, 11 Dec 2012 21:17:04 -0500") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.0 (/) close 13115 thanks