-*-outline-*-
              Frequently Asked Questions about MMM Mode
              =========================================

* How do I write/capitalize the name of this package/mode?

However you want.  The author says `MMM Mode' (and occasionally `MMM')
when discussing the entire package, and `mmm-mode' when discussing the
emacs mode or function.  He does think, however, that `Mmm' looks
rather ugly, although that is how SourceForge insists on capitalizing
the name of the mailing list.


* How do I get rid of that ugly gray background color?

Put the following line in your Emacs initialization file:

  (setq mmm-submode-decoration-level 0)

You may want to try using MMM Mode for a while with the background
highlight, however, or merely changing it to a different color.  There
are two reasons it's there by default:

1. MMM Mode isn't as smart as you might hope it would be about
   recognizing new submode regions, so the presence or absence of the
   highlight can let you know at a glance where it thinks they are.

2. Just like the rest of font-lock, it helps you mentally organize the
   code; you can see at a glance that THIS code is executed as Perl,
   but THAT code is straight HTML (or whatever).  You can get even
   more help by setting the above variable to 2, in which case regions
   will get a background color according to their function.


* I typed `<%' (or other delimiter) but I'm still in the wrong mode.

MMM Mode isn't that smart yet.  You have to tell it explicitly to
reparse (`C-c % C-5' or `C-c % C-b') when you add new submode regions,
and both delimiters have to be present.  Hopefully a future version
will be able to automatically recognize new regions an you type them,
but that version is not yet here.

However, most submode classes provide insertion commands that remove
the need to type the delimiters as well as the need to reparse the
block: type `C-c % h' for a list of available insertion commands for
current submode class(es).

With a recent update, you can set `mmm-parse-when-idle' to t, to allow
MMM Mode to reparse the buffer when it's modified and Emacs is idle.
This comes at a certain performance cost.


* Why is the first character of the end delimiter in the submode region?

It isn't.  When your cursor looks like it is over that character, it
is actually *before* that character and therefore inside the submode
region.  You can check that the offending character does not have the
background highlight--that is, if you haven't set the decoration level
to 0.  For example, in the following text (where -!- represents the
cursor position)

  print <<END_TEXT;
  here is some text
  -!-END_TEXT

The 'E' at the beginning of the END_TEXT line is not actually part of
the submode region.  But with the cursor as indicated (that is, the
box is blinking over the `E' which follows the actual cursor
position), Emacs is in text-mode.


* Why won't MMM Mode work with `foo-mode'?

Foo-mode probably has extra variables or states that need to be set
up, that MMM Mode doesn't yet know about.  Often this sort of problem
can be fixed by adding elements to `mmm-save-local-variables'.  If you
know some Elisp, you may want to try and track down the problem
yourself, or you can contact the mailing list and ask for help.
Either way, please file an issue, so that in the future, folks can
use MMM Mode and foo-mode together more easily.


* I'm getting an emacs error, what did I do wrong?

Most likely nothing.  MMM Mode is still more or less alpha software
and is quite likely to contain bugs; probably something in your
configuration has brought a new bug to light.  Please send the text of
the error, along with a stack backtrace (1) and the relevant portions
of your emacs initialization file, to either the maintainer or the
mailing list, and hopefully a fix can be worked out.

Of course, it's also possible that there is an error in your
configuration.  Double-check the elisp syntax in your init file, or
inspect the backtrace yourself.  If the error happens while loading
your init code, try manually evaluating it line by line (`C-x C-e') to
see where the error occurs.  Folks on the mailing list can also help
point out errors, but only with your init code and a backtrace.

If you're having a problem with syntax highlighting, debugging is
complicated by the fact that font-lock swallows errors. To trigger the
error, evaluate the following in the problem buffer (with `M-:'):

  (font-lock-fontify-region (point-min) (point-max))

(1) To get a stack backtrace of an error, set the emacs variable
    `debug-on-error' to non-nil (type `M-x toggle-debug-on-error RET' or
    `M-: (setq debug-on-error t) RET'), then repeat the actions which
    caused the error. A stack backtrace should pop up which you can
    select and copy. If the error occurs while loading emacs, invoke
    emacs with the `--debug-init' (Emacs) or `-debug-init' (XEmacs)
    switch.


* Will MMM Mode work with (Emacs 23 / XEmacs 20 / XEmacs 21 / etc...)?

MMM Mode was designed for FSF Emacs and works best in versions 23 and 24.
But don't let that stop you from trying it under other variants of
emacs.  If you encounter problems, feel free to ask the mailing list,
but success is not guaranteed.

XEmacs 21 has problems with font-lock: for example, often apostrophes in
a different submode region can cause code to be incorrectly font-locked
as a string.

Versions of FSF Emacs < 23 and XEmacs < 21 are not supported.


* XEmacs says `Symbol's function definition is void: make-indirect-buffer'.

You probably used FSF Emacs to compile MMM as it is the one used by
default if both are installed.  To explicitly set the emacs to use
when byte compiling, do the following:

$ cd mmm-mode-x.x.x
$ make distclean
$ ./configure --with-xemacs=/path/to/xemacs
$ make
$ make install

Running `make distclean' is only necessary if you have already
compiled MMM Mode for the wrong emacs, but can never hurt.  The exact
error message this problem produces may change with newer versions of
MMM Mode; always be sure you have compiled for the correct emacsen.


* I want to install the Git version, but there's no `configure' script.

The `configure' script which is included in the official distributions
is not present in Git, because it is automatically generated by GNU
Automake/Autoconf from files like `Makefile.am' and `configure.in'.
To build the Git version the same way as the official distributions,
you must first run `autogen.sh':

$ cd mmm-mode
$ ./autogen.sh

and then you can continue as usual:

$ ./configure
$ make
$ make install

Note that autogen.sh requires aclocal, automake, and autoconf, which
may or may not be installed on your system, since they are considered
developer tools rather than end-user tools.  If you can't or don't
want to install them, however, you can still use the Git version of
MMM Mode by manually copying all the `.el' files into a directory in
your `load-path'.  Optionally, you may also byte-compile them manually
(this is what `make' normally does).  Byte-compiling gives some speed
improvement, but if you experience problems, the stack traces are
sometimes more informative if you are using the source files only.

The Info files `mmm.info-*' are also not included in Git, since they
are generated from `mmm.texinfo' by the program `makeinfo'.  If you
want to install the Info documentation from Git, you will have to run
this manually as well, and copy the resulting info files into the
appropriate location for your system.

The Git version is, of course, even less guaranteed to be bug-free
than the official distributions.  But please report any problems you
have with it, so they can be fixed for the next release.


* You haven't answered my question; how can I get more help?

Create an issue at <https://github.com/purcell/mmm-mode/issues>, or
check out the MMM Mode web site, <http://mmm-mode.sourceforge.net>,
there is a link to the subscription page for the MMM Mode mailing list.

When asking a question or reporting a problem, be sure to give the
versions of emacs and MMM Mode you are using, and any other relevant
information.
