[Top][All Lists]

[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: 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
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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]