GNU bug report logs - #23002
[OSX] 25.0.92; sluggish M-x (`while-no-input' non-responsive)

Previous Next

Package: emacs;

Reported by: Leo Liu <sdl.web <at> gmail.com>

Date: Sun, 13 Mar 2016 04:03:02 UTC

Severity: normal

Found in version 25.0.92

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


Message #26 received at 23002 <at> debbugs.gnu.org (full text, mbox):

From: YAMAMOTO Mitsuharu <mituharu <at> math.s.chiba-u.ac.jp>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 23002 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>,
 Leo Liu <sdl.web <at> gmail.com>,
 YAMAMOTO Mitsuharu <mituharu <at> math.s.chiba-u.ac.jp>
Subject: Re: bug#23002: 25.0.92; sluggish M-x
Date: Wed, 16 Mar 2016 08:52:11 +0900
>>>>> On Tue, 15 Mar 2016 10:21:36 -0400, Stefan Monnier <monnier <at> iro.umontreal.ca> said:

>> However, the sluggishness during the evaluation of
>> execute-extended-command--shorter is common to the both ports on OS X,
>> or non-interrupt-driven systems that use polling with SIGALRM for
>> quit/while-no-input handling, in general.  I'm thinkng about applying
>> the following patch to the Mac port, but it might also be useful for
>> other systems.

> Hmm... this seems to indicate that while-no-input is just not really
> working in those systems.

At least, not in a responsive way.  I first tried to shorten the
polling interval in start_polling if Vthrow_on_input is non-nil.  But
let-binding throw-on-input as in the definition of while-no-input was
not enough and we would need some explicit function call to activate
start_polling.

>> +      ;; On non-interrupt-driven systems, while-no-input polls for
>> +      ;; input every `polling-period' (default 2) seconds, and that is
>> +      ;; not frequent enough.  So we call input-pending-p manually.
>> +      (if (and use-polling (input-pending-p))
>> +          (signal 'quit nil))

> Hmm... I'm not sure I understand: if input-pending-p returns non-nil,
> why are we still in this loop?

> IOW, I get the impression that the above call to input-pending-p will
> end up triggering a kind of "poll" to fetch new input, so we should be
> able to arrange for this fetching to trigger whatever should normally be
> triggered by incoming input (e.g. getting out of the while-no-input
> loop), so we could just reduce the above 2 lines to a single call to
> `input-pending-p'.
> I understand this may not seem like a big progress, but "every bit
> counts" ;-) tho more seriously, I'm asking this mostly to better
> understand what's going on (but also because I get the impression that
> (signal 'quit nil) is not always the right thing to do).

Indeed.  (if use-polling (input-pending-p)) does work.

				     YAMAMOTO Mitsuharu
				mituharu <at> math.s.chiba-u.ac.jp




This bug report was last modified 4 years and 230 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.