[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-ev
From: |
Alan Mackenzie |
Subject: |
Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation |
Date: |
Sat, 26 Oct 2019 14:18:19 +0000 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
Hello, Stefan.
On Sat, Oct 26, 2019 at 08:41:27 -0400, Stefan Monnier wrote:
> > (run-with-timer 0 nil
> > (lambda (msg)
> > (message "%s" msg))
> > msg)
> > run-with-timer is being used to run message once, immediately.
> > Why not just call message?
> Good question. It's been that way since
> commit 5766c380eec20a19844253cbb511922b6c70fc0b
> Author: Stefan Monnier <address@hidden>
> Date: Sat Sep 12 03:35:40 2009 +0000
> * lread.c (Fload): Don't output a message after loading an obsolete
> package any more (done in Lisp now).
> * subr.el (do-after-load-evaluation): Warn the user after loading an
> obsolete package.
> but I can't see any trace of an explanation nor can I find it in my memory.
> > What is going on, here? Is the run-with-timer mechanism being used
> > deliberately to make the "deprecated" message prevail over other
> > messages?
> That's my best guess, yes.
I think I can see what's happening, now. The (run-with-timer 0 nil ...)
mechanism doesn't trigger its function until Emacs is waiting for input.
This will be in the minibuffer routines, just after the y-or-n-p has
displayed its prompt string and tries to read a character. So the
(run-with-timer ...) message will overwrite any prompt string.
I have counted 11 occurrences of run-with-timer or run-at-time with a
zero delay in them.
So, the (run-with-timer ...) seems indeed to be being used to raise the
"priority" of its message. Maybe a simple message call should be used
here instead.
> > The current situation seems unsatisfactory; the prompt from
> > hack-local-variables is more important than the deprecation message,
> > and shouldn't be obscured by it.
> It's a kind of general problem with messages, indeed.
Yes.
> Stefan
--
Alan Mackenzie (Nuremberg, Germany).
- Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation, (continued)
- Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation, Lars Ingebrigtsen, 2019/10/29
- Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation, Juri Linkov, 2019/10/29
- Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation, Lars Ingebrigtsen, 2019/10/29
- Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation, martin rudalics, 2019/10/30
- Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation, Juri Linkov, 2019/10/30
- Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation, Stefan Monnier, 2019/10/30
Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation,
Alan Mackenzie <=
Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation, Juanma Barranquero, 2019/10/26
Re: Strange use of (run-with-timer 0 nil #'foo args) in do-after-load-evaluation, Juri Linkov, 2019/10/27