[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Interesting problem: eval-after-load and local variables
From: |
Kevin Rodgers |
Subject: |
Re: Interesting problem: eval-after-load and local variables |
Date: |
Thu, 18 Oct 2012 06:55:36 -0600 |
User-agent: |
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20 |
On 10/17/12 2:32 AM, Sebastien Vauban wrote:
Kevin Rodgers wrote:
...
In general, it is not necessary to load a library before customizing its global
options. You should get the desired effect with just:
(setq time-stamp-format "%:y-%02m-%02d %3a %02H:%02M %u")
I know. And this is a very somewhat ridiculous example. But, for speed and
clarity of my .emacs, I've generally put all customs inside an
eval-after-load. A setq is certainly not time-taker, certainly not when alone,
but I've applied the same principal to many other blocks of customs.
I don't see how the eval-after-load boilerplate provides any speed or clarity.
...
I don't see how, since those variables aren't autoloaded. (Their autoload
cookies only result in the safe-local-variable property being dumped into the
emacs executable for each symbol.) I suspect you have enabled time stamp as
documented in the Emacs manual:
Then add the hook function `time-stamp' to the hook
`before-save-hook'; that hook function will automatically update the
time stamp, inserting the current date and time when you save the file.
(The function time-stamp is autoloaded.)
You're absolutely right! I described the correct effect, but not the right
cause...
...
Actually, I think the file local variables are applied and then overridden by
the eval-after-load form (but only for the first file that you save).
Your explanation must be right. But my question was more general, in the
sense: is this the behavior one would expect? Or *should local vars triumph
over the setq done in the eval-after-load?*
We should expect file local variables and eval-after-load to work as documented
-- and they do. It is our responsibility to use them correctly -- but you used
eval-after-load unnecessarily, without considering the context.
Do other files with time stamp templates work as intended?
I'll check (but I've already applied the fix suggested by Michael). I guess
the answer is yes.
...
I think you should either skip the eval-after-load boilerplate
As said, for this example: you're definitively right. It's kind of useless.
or use setq-default in the eval-after-load form as suggested by Michael.
Can I use setq-default with whichever var? I guess not. But am I right?
You _can_ use setq-default on any variable, to ensure that you are setting its
global binding and not the current buffer-local binding (if any).
--
Kevin Rodgers
Denver, Colorado, USA