unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Tassilo Horn <tsdh@gnu.org>
Cc: 20404@debbugs.gnu.org
Subject: bug#20404: 25.0.50; Sometimes no fontification with jit-lock-defer-time
Date: Thu, 23 Apr 2015 12:16:51 +0300	[thread overview]
Message-ID: <83zj5z19x8.fsf@gnu.org> (raw)
In-Reply-To: <87bnifw6z8.fsf@gnu.org>

> From: Tassilo Horn <tsdh@gnu.org>
> Cc: 20404@debbugs.gnu.org
> Date: Thu, 23 Apr 2015 11:04:43 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > And here's why: _any_ command that goes through
> > execute-extended-command will run this code:
> >
> >             (when suggest-key-bindings
> >               (sit-for (cond
> >                         ((zerop (length (current-message))) 0)
> >                         ((numberp suggest-key-bindings) suggest-key-bindings)
> >                         (t 2))))))
> >
> > The default value of suggest-key-bindings is t, so this means we
> > _always_ sit-for 2 seconds, unless the echo area shows nothing (a rare
> > situation in Emacs).  When Emacs is parked inside sit-for, it doesn't
> > become idle, I think for good reasons.  So the idle timers will not
> > run until those 2 sec have expired, or some input becomes available.
> 
> Oh, yes, this explains things.

This problem doesn't exist in Emacs 24.5, it only happens on master.
And the reason seems to be the change in execute-extended-command:
Emacs 24 only calls sit-for when the command actually _has_ a key
binding:

    (when binding
      ;; But first wait, and skip the message if there is input.
      (let* ((waited
              ;; If this command displayed something in the echo area;
              ;; wait a few seconds, then display our suggestion message.
              (sit-for (cond
                        ((zerop (length (current-message))) 0)
                        ((numberp suggest-key-bindings) suggest-key-bindings)
                        (t 2)))))

On master, we wait unconditionally (and then wait some more if we
actually show the suggested key binding, but that happens only once
per given command).

So perhaps some small change there, which removes this unnecessary
unconditional wait whenever possible could solve the issue with
jit-lock-defer-time and other similar idle timers.

> Maybe such sticky messages could be shown in the `header-line' and then
> be removed by a timer.  But of course, what should one do if the
> header-line is already in use?

And in addition, this will cause an unpleasant redisplay of the
current window, something that display in the echo area avoids.

> But how does that explain the occassionally non-fontified compile
> buffers I get during package upgrades/installs?  Those don't go through
> `execute-extended-command'.  But compile.el has some own `sit-for'
> invocations that might delay timers.

Yes, something similar.  If you can reproduce these problems at will,
I can tell how to figure out which code caused the delay, similarly to
what I did to figure out the problem with execute-extended-command.





  reply	other threads:[~2015-04-23  9:16 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-22  9:45 bug#20404: 25.0.50; Sometimes no fontification with jit-lock-defer-time Tassilo Horn
2015-04-22 10:32 ` Eli Zaretskii
2015-04-22 20:32   ` Tassilo Horn
2015-04-22 21:39     ` Eli Zaretskii
2015-04-23  5:59       ` Tassilo Horn
2015-04-23  6:14         ` Eli Zaretskii
2015-04-23  8:36           ` Tassilo Horn
     [not found] ` <mailman.1344.1429696032.904.bug-gnu-emacs@gnu.org>
2015-04-22 16:31   ` Alan Mackenzie
2015-04-22 17:37     ` Stefan Monnier
2015-04-22 19:32       ` Alan Mackenzie
2015-04-22 20:52         ` Stefan Monnier
2015-04-22 20:10       ` Tassilo Horn
2015-04-22 21:33         ` Eli Zaretskii
2015-04-23  4:15           ` Tassilo Horn
2015-04-23  6:35             ` Eli Zaretskii
2015-04-23 13:40               ` Stefan Monnier
2015-04-23 15:11                 ` Eli Zaretskii
2015-04-23 16:23                   ` Stefan Monnier
2015-04-23 17:03                     ` Eli Zaretskii
2015-04-23 17:27                       ` Stefan Monnier
2015-04-23 17:34                         ` Eli Zaretskii
2015-04-23 19:35                           ` Stefan Monnier
2015-04-24  9:41                             ` Eli Zaretskii
2015-04-24 14:03                               ` Stefan Monnier
2015-04-24 14:36                                 ` Eli Zaretskii
2015-04-24 18:03                                   ` Stefan Monnier
2015-04-23 19:53                       ` Tassilo Horn
2015-04-23 17:25                     ` Eli Zaretskii
2015-04-23 19:31                       ` Stefan Monnier
2015-04-23 19:52                         ` Eli Zaretskii
2015-04-23 19:56                         ` Tassilo Horn
2015-04-23  7:54 ` Eli Zaretskii
2015-04-23  8:38   ` Eli Zaretskii
2015-04-23  9:04     ` Tassilo Horn
2015-04-23  9:16       ` Eli Zaretskii [this message]
2015-04-23 13:40     ` Stefan Monnier
2019-10-31 14:23     ` Lars Ingebrigtsen
2019-10-31 14:51       ` Eli Zaretskii
2015-04-23  8:38   ` Tassilo Horn

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=83zj5z19x8.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=20404@debbugs.gnu.org \
    --cc=tsdh@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 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).