From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: npostavs@users.sourceforge.net Newsgroups: gmane.emacs.bugs Subject: bug#25295: Represent eieio objects using object-print in backtraces and edebug Date: Mon, 20 Feb 2017 21:56:47 -0500 Message-ID: <878tp0i74g.fsf@users.sourceforge.net> References: <87pokampa4.fsf@ericabrahamsen.net> <8760m2mmlq.fsf@ericabrahamsen.net> <87lguq5r87.fsf@ericabrahamsen.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1487646082 26430 195.159.176.226 (21 Feb 2017 03:01:22 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 21 Feb 2017 03:01:22 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) Cc: Eric Abrahamsen , 25295@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Feb 21 04:01:18 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cg0hX-0006JO-74 for geb-bug-gnu-emacs@m.gmane.org; Tue, 21 Feb 2017 04:01:15 +0100 Original-Received: from localhost ([::1]:41982 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cg0hc-0002a3-Vf for geb-bug-gnu-emacs@m.gmane.org; Mon, 20 Feb 2017 22:01:21 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43459) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cg0cY-0007N7-HI for bug-gnu-emacs@gnu.org; Mon, 20 Feb 2017 21:56:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cg0cU-0006hN-IV for bug-gnu-emacs@gnu.org; Mon, 20 Feb 2017 21:56:06 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:49782) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cg0cU-0006hJ-Eo for bug-gnu-emacs@gnu.org; Mon, 20 Feb 2017 21:56:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cg0cU-0002Wc-63 for bug-gnu-emacs@gnu.org; Mon, 20 Feb 2017 21:56:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: npostavs@users.sourceforge.net Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Feb 2017 02:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 25295 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 25295-submit@debbugs.gnu.org id=B25295.14876457449682 (code B ref 25295); Tue, 21 Feb 2017 02:56:02 +0000 Original-Received: (at 25295) by debbugs.gnu.org; 21 Feb 2017 02:55:44 +0000 Original-Received: from localhost ([127.0.0.1]:47981 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cg0cC-0002W6-Ic for submit@debbugs.gnu.org; Mon, 20 Feb 2017 21:55:44 -0500 Original-Received: from mail-it0-f42.google.com ([209.85.214.42]:37504) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cg0cA-0002Vs-Dy for 25295@debbugs.gnu.org; Mon, 20 Feb 2017 21:55:42 -0500 Original-Received: by mail-it0-f42.google.com with SMTP id 203so30166294ith.0 for <25295@debbugs.gnu.org>; Mon, 20 Feb 2017 18:55:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=c0a+aZovl+E7KKKml6ubCCdj5ZdoTgvI3KovkA4X1LQ=; b=XSOeNcL1CSZd8UkZjM7MXILBqynimiCD0ll6osNkc7YXVfWtrl+TGVtgbB1jrH7MV6 1FQrSatTYN1aMvytAUtb6cOeke85smYLee09usVtGOaYeuob9smZAmV4BwrDENsbUG9+ FuCIb1IYUhbOzS0TGS5MDiNNJ8TVUUc36RSReKR4TGiBgXNHM5+A/TLFcLbAqBbAPwIT JxaaXl69zJwfCiDp0fgoCofsYPcvtUC9A9VkNdJQLSNDAbdI3lRQqsz6vzcy5sXOHg9o QO6l73vEwGwFIdcF6fmuVzVcu51b7HUCSOWNl/PGFeDng7XdJ11MmXNAcSaYFcpP9rDI 3jvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=c0a+aZovl+E7KKKml6ubCCdj5ZdoTgvI3KovkA4X1LQ=; b=OIzUKicglCocbG6/3ywObGFyRGV/TLeaPiwdD3ySDjDGlGzSHnT+9tBt7UzPJrGjtT 2PEL2Jpac5ns8O2lYOXtAOxBr4cfkC8EE2Se4MD376VUwAeMtD40dukVaOV31AziFD8m b5MF9/8LDBr78XCmRUWgfuUG8RYzbJiTs5igE9c2XgZ8lBIg7+VLUf45K2s6DQnGHe1j ophjepm7Iu9w9qlMG+R1rDwbiz8MvjvutHmf4QfXoRALvtqajEN2CMdyuz5/ZQhskoH4 wNp6neX0qgogT8FuNU0xglaXGx41kV924PDNTKTp1WZvbQ8eCL3FmhPwQwww/Q8wyUS6 ed1A== X-Gm-Message-State: AMke39n5Oju4neoEKvszwflTx7zx4VkWvF4evjOaAxbPOsCMy0PpzAEMT3HrFgiW7zZzmg== X-Received: by 10.107.59.201 with SMTP id i192mr20420388ioa.196.1487645736510; Mon, 20 Feb 2017 18:55:36 -0800 (PST) Original-Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id 62sm6969098itl.1.2017.02.20.18.55.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 20 Feb 2017 18:55:35 -0800 (PST) In-Reply-To: (Stefan Monnier's message of "Wed, 04 Jan 2017 23:37:26 -0500") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:129605 Archived-At: Stefan Monnier writes: >> Actually, print.c is already setup to be (at least partially) reentrant >> (for the case `printcharfun` is a function), so maybe making it fully >> reentrant won't be too hard. But we'd still want to provide some ad-hoc >> prin1-like function which continues the print job rather than starting >> a new nested one; this is needed e.g. if the custom printer wants to >> print a value V but V has already been printed so it should be printed >> as a reference #NN# to the previous one. > > Looking further at the code, maybe this isn't even needed, since the > print-number-table can survive calls to print. But that can get ugly > when your printer code also want to call `print` for "unrelated" > purposes (e.g. to print debug messages in a side buffer). > And I'll stop thinking about interaction with concurrency. Can we allow overriding printing of primitive types too? I'm wanting that for e.g., printing byte code functions in nicer ways. Looking to Common Lisp for inspiration, there is generic function print-object[1], and also *print-pprint-dispatch* (an alist of type specifiers -> printer functions). Cycle detection state seems to be packed in with STREAM, which is convenient, although dispatching on STREAM becomes harder. [1]: http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/stagenfun_print-object.html [2]: http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/sec_22-2-1-4.html