From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.devel Subject: Re: `unreadablep' Date: Wed, 15 Dec 2021 13:19:02 +0100 Message-ID: <87k0g6kqmh.fsf@gnus.org> References: <87bl1imhnd.fsf@gnus.org> <87h7bas2kb.fsf@yahoo.com> <87wnk6l0yu.fsf@gnus.org> <87czlyryq0.fsf@yahoo.com> <87sfuuktj2.fsf@gnus.org> <8735muqfcy.fsf@yahoo.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="9336"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cc: emacs-devel@gnu.org To: Po Lu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Dec 15 13:21:31 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mxTHm-0002B4-LA for ged-emacs-devel@m.gmane-mx.org; Wed, 15 Dec 2021 13:21:30 +0100 Original-Received: from localhost ([::1]:49992 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mxTHl-0003mP-H9 for ged-emacs-devel@m.gmane-mx.org; Wed, 15 Dec 2021 07:21:29 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:41084) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mxTFZ-0001d7-VR for emacs-devel@gnu.org; Wed, 15 Dec 2021 07:19:13 -0500 Original-Received: from [2a01:4f9:2b:f0f::2] (port=41826 helo=quimby.gnus.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mxTFX-0001b0-HC for emacs-devel@gnu.org; Wed, 15 Dec 2021 07:19:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Efcuf6IY5Vu/qAUU6VkLQDgD1qL5MySkAr0/wiMFlRo=; b=N3mB68pf2o2rhW5rlofM0zCsBO 4ruzWtFaEpddn7Nq5JIQgXxVrU94mA4EqYwWR0OmOdfiaNknedicHfPlAlbt9elkgoiIDb53tQmKv GkxF3p4BOyD8S+j4LI4i/LFVIWAO/xj3eZBDh88WvOupJ4sEE6mTJ+nCF+klqJZIFj5Q=; Original-Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mxTFQ-0004jl-Iz; Wed, 15 Dec 2021 13:19:07 +0100 Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEVzh4uuvrxBUFX/ //8ut8HHAAAAAWJLR0QDEQxM8gAAAAd0SU1FB+UMDws4HvYLs78AAAF9SURBVCjPPdJBa4MwFAfw tJhSPHWl2WEnHStUv4VlHc6TSp4MT9vYofRT2GJ28DjWnasQiO9TLia2gpAf/5eX8JQQWjAYniJd EQ2hlx9Q3sDaEVwA/w5YbgA0S7y54BZ+/qNmEiyivEQ8Q+oMgDSc4jmzCZStF8q3dGFwOAlXZimx cNhWXsuSih36aGyAE0j6V7unQP32WcoHrFAYOBYMCpXZMtcAbOtQ36VQOwPmnijkY0KTTtzK6OFL wsMIP3458qS3CF4/q2wbjNiHRz8cE7qfV/7UYsXiqG7vLO5ZOZdy0lrQsiPtY1/oqxGHlsT5fWxz A8Enu/NUlKabKJRXd1fkuD+hHtUAmSpnicKMiq0BvxYNs/jg6P00zJzDIo6X2TB4vdbf0PNyDeDE VQze3/8almBFEHs4+Pd4RlQW8g8FXhRRJlk0EpXF/qluxAWvyfO87oY9KoDNmm47ZRpsAL1qurFQ gN0yDlRosFJ+QoLhHP3vLI/r+FnxmPwDfgizGO14aqQAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEt MTItMTVUMTE6NTY6MzArMDA6MDBFx8rFAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTEyLTE1VDEx OjU2OjMwKzAwOjAwNJpyeQAAAABJRU5ErkJggg== X-Now-Playing: Propaganda's _A Secret Wish_: "Dream Within A Dream" In-Reply-To: <8735muqfcy.fsf@yahoo.com> (Po Lu's message of "Wed, 15 Dec 2021 19:25:49 +0800") X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a01:4f9:2b:f0f::2 (failed) Received-SPF: pass client-ip=2a01:4f9:2b:f0f::2; envelope-from=larsi@gnus.org; helo=quimby.gnus.org X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:282018 Archived-At: Po Lu writes: > Yes, now I think the `print-unreadable-function' solution would be best; > we could just cause a non-local exit from within that function. The PRINTCHARFUN just gets a single character at a time, doesn't it? So it's not at the correct level to determine whether something is unreadable or not... I wonder whether two new simple read-* variables would cover all the use cases (without having to go through prin1 twice ever). 1) When you want to signal an error, but use the representation otherwise: (use-thing (let ((print-error-on-unreadable t)) (condition-case nil (prin1-to-string object) (unreadable-error (user-error "can't use this"))))) This would signal an error as soon as prin1 sees something unprintable, so it'd be fast. 2) When you always want to insert it, but tweak it (a la savehist): (let ((print-return-readable t) (start (point))) (unless (prin1 object (current-buffer)) (goto-char start) (insert ";; "))) I think that should cover the use cases? Perhaps this is over engineering, but it would be nice to implement things like this efficiently. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no