all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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

  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.