From: Michael Heerdegen <michael_heerdegen@web.de>
To: 15042@debbugs.gnu.org
Cc: Thierry Volpiatto <thierry.volpiatto@gmail.com>
Subject: bug#15042: 24.3.50; while-no-input and input-pending-p
Date: Wed, 07 Aug 2013 17:39:42 +0200 [thread overview]
Message-ID: <87wqnx7bnl.fsf@web.de> (raw)
Hello,
I want to discuss if the current implementation of `while-no-input':
--8<---------------cut here---------------start------------->8---
(defmacro while-no-input (&rest body)
"Execute BODY only as long as there's no pending input.
If input arrives, that ends the execution of BODY,
and `while-no-input' returns t. Quitting makes it return nil.
If BODY finishes, `while-no-input' returns whatever value BODY produced."
(declare (debug t) (indent 0))
(let ((catch-sym (make-symbol "input")))
`(with-local-quit
(catch ',catch-sym
(let ((throw-on-input ',catch-sym))
(or (input-pending-p)
(progn ,@body)))))))
--8<---------------cut here---------------end--------------->8---
that uses a preliminary `input-pending-p' test is useful. My reasons:
1. `input-pending-p' can (and does) return t in cases were no input is
pending (see the doc). In such cases, `while-no-input' just returns t,
although no input was given. This contradicts the doc, is not useful
and the behavior is unforeseeable.
2. Even if `input-pending-p' would not give false alarm sometimes - why
needs `while-no-input' to use it?
If the programmer really wants to check for input _before_ starting the
calculation, he can do so explicitly.
With the current implementation, I have to `discard-input' if I don't
want this.
2 is probably arguable, but 1 is really bad. I experienced that
(while-no-input code ...)
is sometimes semantically equivalent to
t
without any input.
Regards,
Michael.
In GNU Emacs 24.3.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.8.2)
of 2013-08-04 on dex, modified by Debian
(emacs-snapshot package, version 2:20130804-1)
Windowing system distributor `The X.Org Foundation', version 11.0.11204000
System Description: Debian GNU/Linux testing (jessie)
Configured using:
`configure --build x86_64-linux-gnu --host x86_64-linux-gnu
--prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/lib
--localstatedir=/var --infodir=/usr/share/info --mandir=/usr/share/man
--with-pop=yes
--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.3.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.3.50/site-lisp:/usr/share/emacs/site-lisp
--without-compress-info --with-crt-dir=/usr/lib/x86_64-linux-gnu/
--with-x=yes --with-x-toolkit=gtk3 --with-imagemagick=yes
CFLAGS='-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2'
CPPFLAGS='-D_FORTIFY_SOURCE=2' LDFLAGS='-g -Wl,--as-needed
-znocombreloc''
Important settings:
value of $LC_ALL: de_DE.utf8
value of $LANG: de_DE.utf8
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t
next reply other threads:[~2013-08-07 15:39 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-07 15:39 Michael Heerdegen [this message]
2013-08-07 18:02 ` bug#15042: 24.3.50; while-no-input and input-pending-p Stefan Monnier
2013-08-07 20:48 ` Michael Heerdegen
2013-08-08 1:19 ` Stefan Monnier
2021-08-21 13:50 ` Lars Ingebrigtsen
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wqnx7bnl.fsf@web.de \
--to=michael_heerdegen@web.de \
--cc=15042@debbugs.gnu.org \
--cc=thierry.volpiatto@gmail.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 public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).