From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: bojohan+news@dd.chalmers.se (Johan =?utf-8?Q?Bockg=C3=A5rd?=) Newsgroups: gmane.emacs.devel Subject: Re: Idle timers with the active minibuffer Date: Thu, 08 Nov 2007 14:53:37 +0100 Message-ID: References: <87k5otd3jx.fsf@jurta.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1194530127 27866 80.91.229.12 (8 Nov 2007 13:55:27 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 8 Nov 2007 13:55:27 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Nov 08 14:55:31 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Iq7qp-0003ok-Gx for ged-emacs-devel@m.gmane.org; Thu, 08 Nov 2007 14:55:19 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Iq7qe-0004zk-D8 for ged-emacs-devel@m.gmane.org; Thu, 08 Nov 2007 08:55:08 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Iq7pe-0004IW-5j for emacs-devel@gnu.org; Thu, 08 Nov 2007 08:54:06 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Iq7pd-0004HQ-6A for emacs-devel@gnu.org; Thu, 08 Nov 2007 08:54:05 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Iq7pd-0004Gu-0J for emacs-devel@gnu.org; Thu, 08 Nov 2007 08:54:05 -0500 Original-Received: from main.gmane.org ([80.91.229.2] helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Iq7pc-0000Fp-3z for emacs-devel@gnu.org; Thu, 08 Nov 2007 08:54:04 -0500 Original-Received: from list by ciao.gmane.org with local (Exim 4.43) id 1Iq7pQ-00059H-99 for emacs-devel@gnu.org; Thu, 08 Nov 2007 13:53:52 +0000 Original-Received: from remote4.student.chalmers.se ([129.16.29.77]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 08 Nov 2007 13:53:52 +0000 Original-Received: from bojohan+news by remote4.student.chalmers.se with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 08 Nov 2007 13:53:52 +0000 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Original-Lines: 80 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: remote4.student.chalmers.se Mail-Copies-To: never User-Agent: Gnus/5.110007 (No Gnus v0.7) Emacs/23.0.50 (gnu/linux) Cancel-Lock: sha1:YoKgqNKCJPPSECMgdTAi3kPBXBw= X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:82800 Archived-At: Juri Linkov 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-: -- Johan Bockgård