unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Lennart Borgman (gmail)" <lennart.borgman@gmail.com>
To: rms@gnu.org
Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org
Subject: Re: Specifying mode in file variables trouble
Date: Mon, 22 Sep 2008 15:14:13 +0200	[thread overview]
Message-ID: <48D79A25.7050000@gmail.com> (raw)
In-Reply-To: <E1KhdCV-0006Lq-HW@fencepost.gnu.org>

Richard M. Stallman wrote:
>     Maybe, but I think most oftenly that will create name clashes.
> 
> It will cause name clashes is you choose names of existing major modes,
> but you can easily avoid using those.
> 
> Here's what I suggest:
> 
> If there is a customary name (say, `foo' for a kind of file which mixes
> a few ordinary major modes, call the command `foo-mode'.
> 
> Otherwise, if you want a command for the combination of two modes `a'
> and `b', call it `a-b-mode'.
> 
> Or we could use `a+b-mode' for such cases.

I like the idea of using "+" here, that is a good mnemonic.

For web template files (like PHP, JSP, Genshi etc) there are however
often several major mode chunks involved. In for example a php file
there may be chunks with these major modes

  - nxhtml-mode / html-mode
  - php-mode
  - css-mode
  - javascript-mode

I currently use the name nxhtml-mumamo-mode (or html-mumamo-mode) for
the multi major mode, which is of course not that very descriptive. The
name begins with "nxhtml-" because that is the main major mode (there
are only two levels allowed sofar, main major mode and sub chunks major
modes).

Along with your suggestion nxhtml+php-mode would be the most natural.
This name does not tell the whole truth, but is perhaps still less
cryptic than nxhtml-mumamo-mode. I am not quite sure.

>     (There are still good reasons to tell
>     that it is a multi major mode. The most difficult thing is support of
>     minor modes turn on/off and finding reasonable structures for that. Time
>     will tell I think.)
> 
> Let's talk about this problem; maybe I can suggest a general solution
> for it.

There might be several problem, but the bug report I just recieved for
Imenu illustrates one principal problem:

  https://bugs.launchpad.net/bugs/272526

I have not looked into the details, but the problem reports says that
Imenu does not work as expected when moving between chunks (with
different major modes).

The principal problem here is probably that Imenu should work across all
chunks with the same major modes and preserve its chunk specifric values
when moving between those chunks.

So I am thinking about saving those values in a variable, something like
this

  (make-variable-buffer-local 'mumamo-survive-minor-modes)
  (put 'mumamo-survive-minor-modes 'permanent-local t)
  (defvar mumamo-survive-minor-modes nil
    "Hold local minor mode variables specific major modes.
  Those values are saved when leaving a chunk with a certain
  major mode and restored when entering a chunk with the same
  major mode again.

  The value of this variable is an associative list where the key
  is a list with

    \(MAJOR-MODE MINOR-MODE)

  and the value is a stored value for the minor mode.")

For storing the values I am thinking about using the code that does
something similar for visual-line-mode where state variable values are
stored in visual-line--saved-state.

However the drawback is that this has to be implemented for every minor
mode of this kind, but I can't see any way around it currently.

... eh, maybe another way to do it could be to save all buffer local
variables this way and make exceptions for some ...




  reply	other threads:[~2008-09-22 13:14 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-20  0:44 Specifying mode in file variables trouble Lennart Borgman (gmail)
2008-09-20  0:48 ` Lennart Borgman (gmail)
2008-09-20  0:59 ` Miles Bader
2008-09-20  1:06   ` Lennart Borgman (gmail)
2008-09-21  6:32     ` Richard M. Stallman
2008-09-21 12:33       ` Lennart Borgman (gmail)
2008-09-21 23:34         ` Richard M. Stallman
2008-09-22  0:38           ` Lennart Borgman (gmail)
2008-09-22  4:39             ` Richard M. Stallman
2008-09-22 13:14               ` Lennart Borgman (gmail) [this message]
2008-09-22 14:12                 ` Stefan Monnier
2008-09-22 14:26                   ` Lennart Borgman (gmail)
2008-09-23  4:40                     ` Richard M. Stallman
2008-09-23  9:29                       ` Lennart Borgman (gmail)
2008-09-23 19:47                         ` Richard M. Stallman
2008-09-22 23:11                 ` Lennart Borgman (gmail)
2008-09-23  4:40                 ` Richard M. Stallman
2008-09-23  9:47                   ` Lennart Borgman (gmail)
2008-09-23 19:47                     ` Richard M. Stallman
2008-09-23 20:43                       ` Lennart Borgman (gmail)
2008-09-24 13:47                         ` Richard M. Stallman
2008-09-24 13:47                         ` Richard M. Stallman
2008-09-24 17:21                           ` Lennart Borgman (gmail)
2008-09-25  5:49                             ` Richard M. Stallman
2008-09-25  6:28                               ` tomas
2008-09-25  6:41                                 ` Paul R
2008-09-25  7:55                                   ` tomas
2008-09-25  8:35                                     ` Paul R
2008-09-25 16:42                                       ` Lennart Borgman
2008-09-27  4:39                                 ` Richard M. Stallman
2008-10-21 19:16                                   ` Lennart Borgman (gmail)
2008-10-22  5:21                                     ` tomas
2008-10-22  6:21                                     ` Richard M. Stallman
2008-09-23 19:47                     ` Richard M. Stallman
2008-09-23 20:37                       ` Lennart Borgman (gmail)
2008-09-24 13:47                         ` Richard M. Stallman
2008-09-24 16:23                           ` Lennart Borgman (gmail)
2008-09-25  5:50                             ` Richard M. Stallman
2008-09-24 23:09                       ` Lennart Borgman (gmail)
2008-09-23  4:40                 ` Richard M. Stallman
2008-09-23  9:57                   ` Lennart Borgman (gmail)
2008-09-23 16:03                     ` Stefan Monnier
2008-09-23 17:22                       ` Lennart Borgman (gmail)
2008-09-23 20:33                         ` Stefan Monnier
2008-09-23 20:48                           ` Lennart Borgman (gmail)
2008-09-23 21:27                             ` Stefan Monnier
2008-09-23 21:30                               ` Lennart Borgman (gmail)
2008-09-24 20:57                                 ` Richard M. Stallman
2008-09-24 21:29                                   ` Lennart Borgman (gmail)
2008-09-25 17:46                                     ` Richard M. Stallman
2008-09-25 21:34                                       ` Lennart Borgman (gmail)
2008-09-26  4:45                                         ` Richard M. Stallman
2008-09-26  4:45                                         ` Richard M. Stallman
2008-09-25 17:46                                     ` Selecting mumamo modes Richard M. Stallman
2008-09-25 21:12                                       ` Lennart Borgman (gmail)
2008-09-26  4:45                                         ` Richard M. Stallman
2008-10-21 19:20                                           ` Lennart Borgman (gmail)
2008-09-23 19:47                     ` Specifying mode in file variables trouble Richard M. Stallman
2008-09-23 20:26                       ` Lennart Borgman (gmail)
2008-09-24 20:56                         ` Richard M. Stallman
2008-09-24 21:21                           ` Lennart Borgman (gmail)
2008-09-25 17:46                             ` Richard M. Stallman
2008-09-25 21:36                               ` Lennart Borgman (gmail)
2008-09-26  4:45                                 ` Richard M. Stallman
2008-09-24 20:57                         ` Richard M. Stallman
2008-09-24 21:45                           ` Lennart Borgman (gmail)
2008-09-20 19:03 ` Stefan Monnier
2008-09-20 23:34   ` Lennart Borgman (gmail)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48D79A25.7050000@gmail.com \
    --to=lennart.borgman@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=rms@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).