From: bojohan+news@dd.chalmers.se (Johan Bockgård)
To: emacs-devel@gnu.org
Subject: Re: Idle timers with the active minibuffer
Date: Thu, 08 Nov 2007 14:53:37 +0100 [thread overview]
Message-ID: <yoij3avg7sim.fsf@remote4.student.chalmers.se> (raw)
In-Reply-To: 87k5otd3jx.fsf@jurta.org
Juri Linkov <juri@jurta.org> writes:
> Why idle timers don't run when the minibuffer is activated?
>
> I discovered this behavior when tried using isearch in the original
> buffer after switching to it from the minibuffer without exiting it.
> The idle timer for lazy-highlighting doesn't run. Steps to reproduce:
>
> 1. activate the minibuffer by e.g. `M-:'
> 2. switch back to the original buffer by `C-x o'
> 3. start isearch C-s and search for a string that have multiple
> occurrences in the original buffer.
>
> Other occurrences are not highlighted by lazy-highlight face.
> Putting a breakpoint on isearch-lazy-highlight-update shows
> that run-with-idle-timer from isearch-lazy-highlight-new-loop
> never runs it when the minibuffer is not yet exited.
>
> Is it an intentional behavior or a bug?
It worked in Emacs 21. The problem seems to come from the change
to command_loop_1 in the following set of changes:
revision 1.312
date: 2006-10-10 03:20:20 +0200; author: cyd; state: Exp; lines: +2 -5;
* dispnew.c (sit_for): Sit forever if TIMEOUT is t.
* keyboard.c (command_loop_1): Handle non-number values of
`minibuffer-message-timeout'.
(Fexecute_extended_command): Fix typo.
* minibuf.c (temp_echo_area_glyphs): Sit for
`minibuffer-message-timeout' seconds.
The change in question was this:
--- keyboard.c 15 Sep 2006 07:19:14 -0000 1.877
+++ keyboard.c 10 Oct 2006 01:20:20 -0000 1.878
@@ -1546,15 +1546,17 @@
if (minibuf_level
&& !NILP (echo_area_buffer[0])
- && EQ (minibuf_window, echo_area_window)
- && NUMBERP (Vminibuffer_message_timeout))
+ && EQ (minibuf_window, echo_area_window))
{
/* Bind inhibit-quit to t so that C-g gets read in
rather than quitting back to the minibuffer. */
int count = SPECPDL_INDEX ();
specbind (Qinhibit_quit, Qt);
- sit_for (Vminibuffer_message_timeout, 0, 2);
+ if (NUMBERP (Vminibuffer_message_timeout))
+ sit_for (Vminibuffer_message_timeout, 0, 2);
+ else
+ sit_for (Qt, 0, 2);
/* Clear the echo area. */
message2 (0, 0, 0);
I thinks it was made in response to this bug report
[minibuffer-message-timeout has no effect]
http://lists.gnu.org/archive/html/emacs-devel/2006-10/msg00216.html
Reverting the change fixes the isearch problem. The bug report contained
no test case, but the following example works correctly without the
change to command_loop_1 (the fix to temp_echo_area_glyphs is enough).
(defun foo ()
(interactive)
(let ((minibuffer-message-timeout 0.2))
(minibuffer-message "foo")))
(global-set-key [f7] 'foo)
;; M-: <f7>
--
Johan Bockgård
next prev parent reply other threads:[~2007-11-08 13:53 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-08 0:42 Idle timers with the active minibuffer Juri Linkov
2007-11-08 13:53 ` Johan Bockgård [this message]
2007-11-09 22:00 ` Richard Stallman
2007-11-09 23:21 ` Johan Bockgård
[not found] ` <E1Isspk-0003bO-Av@fencepost.gnu.org>
2008-02-23 19:46 ` [Emacs 22.2] " Juri Linkov
2008-02-23 21:03 ` Chong Yidong
2007-11-08 17:40 ` Richard Stallman
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=yoij3avg7sim.fsf@remote4.student.chalmers.se \
--to=bojohan+news@dd.chalmers.se \
--cc=emacs-devel@gnu.org \
/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.