bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#347: C mode asks twice about local variables


From: Stefan Monnier
Subject: bug#347: C mode asks twice about local variables
Date: Mon, 09 Jun 2008 11:18:28 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

>> > Yes.  This needs fixing, somehow.
>> 
>> > The way this happens is that in a C file's local variables list, there
>> > are two "special" variables, e.g. `c-file-style'.
>> 
>> > When 
>> 
>> >     c-basic-offset: 11
>> >     c-file-style: "k&r"
>> 
>> > occurs in the local variable list, this triggers a hook function
>> > which calls (c-set-style "k&r").  The hook is
>> > hack-local-variables-hook.  The problem is that this c-set-style call
>> > will overwrite the explicit value for c-basic-offset.  The explicit
>> > value MUST take precedence here.
 
>> Can you try and call `c-file-style' with some extra "don't override"
>> (when called from that hack-local-variables-hook) argument so that any
>> variable that already has a buffer-local binding will not be
>> overridden?

Any comment about this suggestion?

>> > My solution was to call hack-local-variables a second time from
>> > within the hook function, first having deleted any occurrences of
>> > `mode', `c-file-style' etc. from the Local Variables.  This kludge
>> > worked reasonably well until the handling of
>> > safe/dangerous-local-variables was changed for Emacs 22.

>> How 'bout wrapping the call inside (let ((enable-local-variables
>> :safe))?

> I've been thinking this over.  It's not the right solution.  For a start,
> the second call to `hack-local-variables' is in itself a kludge.

I'd tend to agree, but "kludge" fixes the problem, it's still better
than the current "same kludge + problem".

> More importantly, the value ":safe" is non-portable (to earlier Emacsen,
> or to the other one),

Non-portability might indeed be a problem (tho, it's obviously "your"
problem rather than mine), but introducing a new hook in Emacs-23 won't
help you there, so it's not relevant to this discussion.

> and doesn't feel at all safe.

But I don't see why you don't consider it safe: it is really meant to be
safe, so if there's any doubt about it, we should very much address it.

> (defvar before-hack-local-variables-hook nil
[...]
> What do you think?

I'm not thrilled.  You might convince me at some point, but the kludge
doesn't look nearly as bad when compared to this hook.


        Stefan







reply via email to

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