emacs-devel
[Top][All Lists]
Advanced

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

Re: Specifying mode in file variables trouble


From: Lennart Borgman (gmail)
Subject: Re: Specifying mode in file variables trouble
Date: Wed, 24 Sep 2008 23:21:04 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071031 Thunderbird/2.0.0.9 Mnenhy/0.7.5.666

Richard M. Stallman wrote:
>     There are three main scopes (maybe there are more) for minor modes:
> 
>     - Global
>     - Per buffer
> 
> I think I know what those two mean.
> 
>     - Per major mode
> 
> What does that mean?  I don't know of that.

I mean minor modes that are used with specific major modes. Or any minor
mode that is turned on in a major mode hook.

>     Global minor modes are not a problem here.
> 
> Usually they are not; but if a minor mode is itself global,
> you can make a buffer-local binding for the variable.
> 
> Perhaps when you speak of "global" and "per buffer"
> you mean how the variable is bound, rather than how the mode
> normally works.

In this case, yes.

>     I have suggested long ago using the existing mechanism for
>     distinguishing between local variables that are per buffer and those
>     that are per major mode.
> 
> I don't understand that distinction, but I know that just about any
> variable in Emacs _can_ be given a buffer-local binding by a major
> mode command.  So is the distinction meaningful?

I think so. For example flymake works on the file regardless of the
major mode. If mumamo is used in the buffer then flymake should still
work on the file - which is in a sense the same as the whole buffer here.

>                            In other words: the minor modes that are per
>     buffer should use
> 
>        (put 'PER-BUFFER-VARIABLE 'permanent-local t)
> 
>     on their buffer local variables. (I do that now in mumamo.el for some of
>     the most important.)
> 
> I am not sure that change is correct.  When the variable is not marked
> as permanent-local, that could mean we want major mode commands to
> reset this minor mode.  Of course, moving between chunks in mumamo
> should not reset it.

For cases like flymake we know that the minor mode is per buffer/file. I
think that will be true for many parsers (but we will have to help them
over "bad" chunks, ie chunks they do not expect to see).

The same is also true for emulators like viper.

For the cases above I think using (put 'PER-BUF-VAR 'permanent-local t)
is the right thing. In other cases we can't do even if we want the minor
modes (buffer local variables) to survive when point is moved to a new
chunk.

For that case I have implemented mumamo-survive, a list of variable
symbols that should survive when moving between chunks. Of course that
is a rather rough approximation. To refine it a bit I have now also
added save/restore of buffer local variables per major modes (see
earlier messages in this thread).

> Can you tell us some of the variables for which you added that property?
> 
> Perhaps we want to have a different value for the `permanent-local' property
> that applies only to mumamo.

Yes, perhaps. I think however we should first consider the structures
above and see if they are enough. (Then we can maybe implement them
using specific properties instead.)




reply via email to

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