all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Lars Ingebrigtsen <larsi@gnus.org>
To: Po Lu <luangruo@yahoo.com>
Cc: emacs-devel@gnu.org
Subject: Re: `unreadablep'
Date: Wed, 15 Dec 2021 09:35:37 +0100	[thread overview]
Message-ID: <87wnk6l0yu.fsf@gnus.org> (raw)
In-Reply-To: <87h7bas2kb.fsf@yahoo.com> (Po Lu's message of "Wed, 15 Dec 2021 16:19:16 +0800")

Po Lu <luangruo@yahoo.com> writes:

> Yes, it would be very convenient indeed.
>
> I think the best solution would be to allow `prin1' to optionally return
> whether or not any unreadable objects were printed, instead of the
> object itself.

I was thinking that for efficiency (and ease of usage), nothing would be
printed.  That is, something like

(defun unreadablep (object)
  (condition-case nil
      (prin1 object 'error-on-unprintable)
    (:success t)
    (unprintable-error nil)))

and then prin1 would signal an error if it encounters an unprintable
object in the structure, but otherwise print nothing.

But I still haven't actually looked at the prin1 code, so I'm not sure
whether that would be messy or not.  😀 The advantage of using the prin1
code to do the checking (instead of implementing a separate function to
traverse the data itself) is that we'd be pretty sure that there aren't
any glitches between the prin1 implementation and the checker
implementation...

But having `prin1' return whether it printed something unreadable also
sounds attractive.  I guess it depends on the use case.  If you're
saying

(if (unprintable o)
    (insert ";; " (prin1 o (current-buffer)))
  (prin1 o (current-buffer)))

then you're traversing the data twice, which isn't efficient, so
inserting it first and then checking would be nice.  But if you're doing

(when (unprintable o)
  (error "Nope"))

then it'd be inconvenient for it to be printing anything.

And what about `prin1-to-string'?  It has to return the string...  Hm...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



  reply	other threads:[~2021-12-15  8:35 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-15  7:49 `unreadablep' Lars Ingebrigtsen
2021-12-15  8:19 ` `unreadablep' Po Lu
2021-12-15  8:35   ` Lars Ingebrigtsen [this message]
2021-12-15  9:42     ` `unreadablep' Po Lu
2021-12-15 11:16       ` `unreadablep' Lars Ingebrigtsen
2021-12-15 11:25         ` `unreadablep' Po Lu
2021-12-15 12:19           ` `unreadablep' Lars Ingebrigtsen
2021-12-15 12:22             ` `unreadablep' Po Lu
2021-12-15 12:35               ` `unreadablep' Lars Ingebrigtsen
2021-12-15 12:42                 ` `unreadablep' Po Lu
2021-12-15 12:44                   ` `unreadablep' Lars Ingebrigtsen
2021-12-15 12:46                     ` `unreadablep' Po Lu
2021-12-15 12:51                       ` `unreadablep' Po Lu
2021-12-15 12:58                       ` `unreadablep' Lars Ingebrigtsen
2021-12-15 12:36               ` `unreadablep' Ihor Radchenko
2021-12-15 12:37                 ` `unreadablep' Po Lu
2021-12-15 17:00     ` [External] : `unreadablep' Drew Adams
2021-12-15  8:35 ` `unreadablep' Ihor Radchenko
2021-12-15  9:51   ` `unreadablep' Po Lu
2021-12-15 10:20     ` `unreadablep' Ihor Radchenko
2021-12-15 10:21       ` `unreadablep' Ihor Radchenko
2021-12-15 10:21       ` `unreadablep' Po Lu
2021-12-15 10:36         ` `unreadablep' Ihor Radchenko
2021-12-15 10:44           ` `unreadablep' Po Lu
2021-12-15 11:12             ` `unreadablep' Ihor Radchenko
2021-12-15 11:16               ` `unreadablep' Po Lu
2021-12-15 11:39                 ` `unreadablep' Ihor Radchenko
2021-12-15 14:12 ` `unreadablep' Stefan Monnier
2021-12-16  5:48   ` `unreadablep' Lars Ingebrigtsen
2021-12-16  8:03     ` `unreadablep' Eli Zaretskii
2021-12-17  7:18       ` `unreadablep' Lars Ingebrigtsen
2021-12-16 15:35     ` `unreadablep' Qiantan Hong
2021-12-17  7:19       ` `unreadablep' Lars Ingebrigtsen
2021-12-15 15:32 ` `unreadablep' Steingold
2021-12-15 16:04   ` `unreadablep' Qiantan Hong
2021-12-15 16:09 ` `unreadablep' Steingold
2021-12-15 20:21 ` `unreadablep' Philipp Stephani

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wnk6l0yu.fsf@gnus.org \
    --to=larsi@gnus.org \
    --cc=emacs-devel@gnu.org \
    --cc=luangruo@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.