unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@linkov.net>
To: Stephen Berman <stephen.berman@gmx.net>
Cc: 38457@debbugs.gnu.org
Subject: bug#38457: 27.0.50; dabbrev-expand regression due to message change
Date: Tue, 03 Dec 2019 01:00:40 +0200	[thread overview]
Message-ID: <8736e2coyv.fsf@mail.linkov.net> (raw)
In-Reply-To: <8736e3vve8.fsf@gmx.net> (Stephen Berman's message of "Mon, 02 Dec 2019 12:06:55 +0100")

[-- Attachment #1: Type: text/plain, Size: 553 bytes --]

> 0. emacs -Q
> 1. M-! te M-/
>
> => It takes about 4 seconds on my machine for the expansion "text" to
> appear, during which the minibuffer displays "[Scanning for
> dabbrevs...100%]" and then "[Scanning for dabbrevs...done]".  On builds
> without this regression, the expansion is virtually instantaneous and no
> message is seen in the minibuffer.

This is because of the current limitation of minibuffer-message.
It uses sit-for to wait for 2 seconds per every message.
This should be fixed by using the timer, so there will be no delays
anymore:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: minibuffer-message-timer.patch --]
[-- Type: text/x-diff, Size: 2894 bytes --]

diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index a7bdde478f..3febdeb174 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -702,6 +702,9 @@ minibuffer
 (defvar minibuffer-message-properties nil
   "Text properties added to the text shown by `minibuffer-message'.")
 
+(defvar minibuffer-message-timer nil)
+(defvar minibuffer-message-overlay nil)
+
 (defun minibuffer-message (message &rest args)
   "Temporarily display MESSAGE at the end of the minibuffer.
 The text is displayed for `minibuffer-message-timeout' seconds,
@@ -732,24 +735,23 @@ minibuffer-message
                 ;; Don't overwrite the face properties the caller has set
                 (text-properties-at 0 message))
       (setq message (apply #'propertize message minibuffer-message-properties)))
-    (let ((ol (make-overlay (point-max) (point-max) nil t t))
-          ;; A quit during sit-for normally only interrupts the sit-for,
-          ;; but since minibuffer-message is used at the end of a command,
-          ;; at a time when the command has virtually finished already, a C-g
-          ;; should really cause an abort-recursive-edit instead (i.e. as if
-          ;; the C-g had been typed at top-level).  Binding inhibit-quit here
-          ;; is an attempt to get that behavior.
-          (inhibit-quit t))
-      (unwind-protect
-          (progn
-            (unless (zerop (length message))
-              ;; The current C cursor code doesn't know to use the overlay's
-              ;; marker's stickiness to figure out whether to place the cursor
-              ;; before or after the string, so let's spoon-feed it the pos.
-              (put-text-property 0 1 'cursor t message))
-            (overlay-put ol 'after-string message)
-            (sit-for (or minibuffer-message-timeout 1000000)))
-        (delete-overlay ol)))))
+
+    (when (timerp minibuffer-message-timer)
+      (cancel-timer minibuffer-message-timer))
+    (when (overlayp minibuffer-message-overlay)
+      (delete-overlay minibuffer-message-overlay))
+    (setq minibuffer-message-overlay
+          (make-overlay (point-max) (point-max) nil t t))
+    (setq minibuffer-message-timer
+          (run-with-timer (or minibuffer-message-timeout 1) nil
+                          (lambda () (when (overlayp minibuffer-message-overlay)
+                                       (delete-overlay minibuffer-message-overlay)))))
+    (unless (zerop (length message))
+      ;; The current C cursor code doesn't know to use the overlay's
+      ;; marker's stickiness to figure out whether to place the cursor
+      ;; before or after the string, so let's spoon-feed it the pos.
+      (put-text-property 0 1 'cursor t message))
+    (overlay-put minibuffer-message-overlay 'after-string message)))
 
 (defun minibuffer-completion-contents ()
   "Return the user input in a minibuffer before point as a string.

  parent reply	other threads:[~2019-12-02 23:00 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-02 11:06 bug#38457: 27.0.50; dabbrev-expand regression due to message change Stephen Berman
2019-12-02 16:02 ` Eli Zaretskii
2019-12-02 23:00 ` Juri Linkov [this message]
2019-12-03  0:15   ` Stephen Berman
2019-12-03  3:36   ` Eli Zaretskii
2019-12-03 23:44     ` Juri Linkov
2019-12-04  3:38       ` Eli Zaretskii
2019-12-04 23:16         ` Juri Linkov
2019-12-05  3:43           ` Eli Zaretskii
2019-12-06  0:10             ` Juri Linkov
2019-12-06  7:44               ` Eli Zaretskii
2019-12-07 23:05                 ` Juri Linkov
2019-12-08  3:28                   ` Eli Zaretskii
2019-12-08  5:18                     ` Eli Zaretskii
2019-12-08 21:50                       ` Juri Linkov
2019-12-09  3:36                         ` Eli Zaretskii
2019-12-09  7:43                           ` Lars Ingebrigtsen
2019-12-09 14:00                             ` Eli Zaretskii
2019-12-09 15:55                               ` Eli Zaretskii
2019-12-11  7:32                               ` Lars Ingebrigtsen
2019-12-11  7:35                                 ` Lars Ingebrigtsen
2019-12-11 16:30                                   ` Eli Zaretskii
2019-12-11 16:28                                 ` Eli Zaretskii
2019-12-24 16:30                                   ` Lars Ingebrigtsen
2019-12-24 17:50                                     ` Eli Zaretskii
2019-12-09 23:45                           ` Juri Linkov
2019-12-10  3:36                             ` Eli Zaretskii
2019-12-10  7:19                               ` HaiJun Zhang
2019-12-10 16:11                                 ` Eli Zaretskii
2019-12-10 17:52                                   ` Drew Adams
2019-12-10 17:51                                 ` Drew Adams
2019-12-10 16:34                               ` Eli Zaretskii
2019-12-10 17:08                                 ` Stefan Monnier
2019-12-10 17:49                                   ` Eli Zaretskii
2019-12-10 17:57                                     ` Eli Zaretskii
2019-12-10 23:45                                       ` Juri Linkov
2019-12-11 16:19                                         ` Eli Zaretskii
2019-12-11 17:34                                           ` Stefan Monnier
2019-12-11 17:50                                             ` Eli Zaretskii
2019-12-11 18:53                                               ` Stefan Monnier
2019-12-11 23:12                                           ` Juri Linkov
2019-12-12  4:39                                             ` Eli Zaretskii
2019-12-12 22:45                                               ` Juri Linkov
2019-12-13  8:25                                                 ` Eli Zaretskii
2019-12-10 19:45                                     ` Stefan Monnier
2019-12-10 20:11                                       ` Eli Zaretskii
2019-12-10 21:45                                         ` Stefan Monnier
2019-12-11  3:24                                     ` HaiJun Zhang
2019-12-11  3:40                                       ` Eli Zaretskii
2019-12-11  3:59                                         ` HaiJun Zhang
2019-12-11 16:26                                           ` Eli Zaretskii
2019-12-12  4:33                                             ` HaiJun Zhang
2019-12-12  5:29                                               ` Eli Zaretskii
2019-12-12 22:58                                               ` Juri Linkov
2019-12-13  7:02                                                 ` Eli Zaretskii
2019-12-13  9:07                                                   ` Eli Zaretskii
2019-12-12 13:21                                             ` Stefan Monnier
2019-12-11  3:35                                 ` HaiJun Zhang
2019-12-11 16:11                                   ` Eli Zaretskii
2019-12-11 16:42                                 ` Eli Zaretskii
2019-12-11 23:24                                   ` Juri Linkov
2019-12-12  5:36                                     ` Eli Zaretskii
2019-12-12 11:08                                       ` Dmitry Gutov
2019-12-12 23:07                                       ` Juri Linkov
2019-12-13  8:46                                         ` Eli Zaretskii
2019-12-11 23:28                               ` Juri Linkov
2019-12-12  5:41                                 ` Eli Zaretskii
2019-12-12 23:12                                   ` Juri Linkov
2019-12-13  8:57                                     ` Eli Zaretskii
2019-12-14 23:10                                       ` Juri Linkov
2019-12-15 15:35                                         ` Eli Zaretskii
2019-12-15 23:59                                           ` Juri Linkov
2019-12-16 16:09                                             ` Eli Zaretskii
2019-12-16 22:29                                               ` Juri Linkov
2019-12-16 23:26                                                 ` Dmitry Gutov
2019-12-17  6:27                                                   ` HaiJun Zhang
2019-12-17 16:19                                                     ` Eli Zaretskii
2019-12-17 23:53                                                     ` Juri Linkov
2019-12-18  3:38                                                       ` HaiJun Zhang
2019-12-17 16:11                                                 ` Eli Zaretskii
2019-12-17 23:51                                                   ` Juri Linkov
2019-12-18 16:24                                                     ` Eli Zaretskii
2019-12-19  0:12                                                       ` Juri Linkov
2019-12-19 15:36                                                         ` Eli Zaretskii
2019-12-19 22:16                                                           ` Juri Linkov
2019-12-19 22:30                                                             ` Dmitry Gutov
2019-12-19 23:17                                                               ` Juri Linkov
2019-12-20  7:34                                                                 ` Eli Zaretskii
2019-12-19 22:52                                                             ` Juri Linkov
2019-12-20  7:59                                                               ` Eli Zaretskii
2019-12-21 22:09                                                                 ` Juri Linkov
2019-12-20  7:54                                                             ` Eli Zaretskii
2019-12-21 22:02                                                               ` Juri Linkov
2019-12-22 19:02                                                                 ` Eli Zaretskii
2019-12-20 14:29                                                             ` Dmitry Gutov
2019-12-21 22:03                                                               ` Juri Linkov
2019-12-23 10:10                                                                 ` Dmitry Gutov
2019-12-23 22:58                                                                   ` Juri Linkov
2019-12-24  0:42                                                                     ` Dmitry Gutov
2019-12-24 23:47                                                                       ` Juri Linkov
2019-12-25 16:30                                                                         ` Dmitry Gutov
2019-12-25 16:44                                                                           ` Eli Zaretskii
2019-12-25 16:49                                                                             ` Dmitry Gutov
2020-01-18  0:59                                                                               ` Dmitry Gutov
2020-01-18  8:19                                                                                 ` Eli Zaretskii
2020-01-20 12:30                                                                                   ` Dmitry Gutov
2020-01-21 16:15                                                                                     ` Eli Zaretskii
2020-01-22  0:46                                                                                       ` Dmitry Gutov
2020-01-18  1:00                                                                           ` Dmitry Gutov
2019-12-05 15:24         ` Kévin Le Gouguec
2019-12-05 16:36           ` Eli Zaretskii
2019-12-06  0:06           ` Juri Linkov
2019-12-06  7:41             ` Eli Zaretskii
2019-12-06 17:15               ` Kévin Le Gouguec
     [not found] <<8736e3vve8.fsf@gmx.net>
     [not found] ` <<8736e2coyv.fsf@mail.linkov.net>
     [not found]   ` <<83y2vujd0y.fsf@gnu.org>
     [not found]     ` <<87blspm0sm.fsf@mail.linkov.net>
     [not found]       ` <<837e3ckbem.fsf@gnu.org>
     [not found]         ` <<871rtjn0kt.fsf@mail.linkov.net>
     [not found]           ` <<83lfrrigj8.fsf@gnu.org>
     [not found]             ` <<87eexiqps5.fsf@mail.linkov.net>
     [not found]               ` <<83lfrphp94.fsf@gnu.org>
     [not found]                 ` <<87wob7g2jk.fsf@mail.linkov.net>
     [not found]                   ` <<83k177ebs0.fsf@gnu.org>
     [not found]                     ` <<AE02ADC8-6567-4EB1-8A44-E60BC4B5807A@gnu.org>
     [not found]                       ` <<87muc27prn.fsf@mail.linkov.net>
     [not found]                         ` <<83tv6acgq5.fsf@gnu.org>
     [not found]                           ` <<87eexdoygh.fsf@mail.linkov.net>
     [not found]                             ` <<83tv68c0nb.fsf@gnu.org>
     [not found]                               ` <<83h828b0lz.fsf@gnu.org>
2019-12-10 17:53                                 ` Drew Adams

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=8736e2coyv.fsf@mail.linkov.net \
    --to=juri@linkov.net \
    --cc=38457@debbugs.gnu.org \
    --cc=stephen.berman@gmx.net \
    /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).