Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
                          MMM Mode for Emacs


  MMM Mode is a minor mode for Emacs that allows Multiple Major Modes
  to coexist in one buffer.  It is well-suited to editing:

  * Preprocessed code, such as server-side Ruby, Perl or PHP embedded in HTML
  * Code generating code, such as HTML output by CGI scripts
  * Embedded code, such as Javascript in HTML
  * Literate programming: code interspersed with documentation, e.g. Noweb


  Use any of the following options:

  1. Users of package.el (a.k.a. ELPA) can easily install MMM Mode from
  the ELPA package repository at -- this is the
  preferred and best-supported installation mechanism.

  2. Since currently MMM Mode is written in pure Emacs Lisp, you could just
  copy all the *.el files in the distribution to a directory in your
  `load-path', and optionally byte-compile them manually (see the Emacs
  Manual). The Makefile has a target to build the MMM Mode info manual, so if
  you're installing manually you might want to do that too.  Put the
  file somewhere on your Info-path and use install-info to generate or update
  the dir file.


  Once MMM Mode is installed, it has to be configured correctly.  This
  can be done in a site-start file or in user's initialization files;
  usually the latter is preferable, except possibly for autoloads.
  First the package needs to be loaded, with either

    (require 'mmm-mode)

  or instead, to save time during emacs startup,

    (require 'mmm-auto)

  Then you will probably want to set something like this:

    (setq mmm-global-mode 'maybe)
    (mmm-add-mode-ext-class 'html-mode "\\.php\\'" 'html-php)

  The first line tells MMM Mode to load itself whenever you open an
  appropriate file, and the second is an example which says to notice
  PHP regions in html-mode files having a `.php' extension.  Both
  lines are necessary.

  You will, of course, want to change and duplicate the second line
  according to your needs. either of the first two parameters can be
  `nil', meaning not to consider that criterion.  For example, if all
  your html files, regardless of extension, are Mason components, you
  will want something like:

    (mmm-add-mode-ext-class 'html-mode nil 'mason)

  whereas if all your files with a `.nw' extension, regardless of
  primary mode (some may be LaTeX, others HTML, say) are Noweb, you
  will prefer

    (mmm-add-mode-ext-class nil "\\.nw\\'" 'noweb)

  See the info file for more extensive documentation, and for other
  configuration options.


  For further information, see (in order) the accompanying info file,
  the documentation strings of functions and variables, the comments
  in the source code, and the source code itself.


  The latest version of MMM Mode should always be available from


  Bug reports, suggestions and questions can be submitted at

  Thanks for using MMM Mode!


New official home for mmm-mode, fixed for Emacs >= 23







No packages published