# Change AUCTeX behavior inside an environment

I am using the LaTeX markdown package to insert quick notes in my document. I would like Emacs to switch to markdown mode inside the markdown environment so it for example won't automatically re-indent markdown nested lists.

Here is an excerpt of the latex file:

\chapter{Introduction}
\label{chap:intro}

\begin{markdown}

Here's what'll be in this chapter:
* thing 1
* thing 2
- aspect A
- aspect B

\end{markdown}

In this chapter, we describe ...



Is there a way to change Emacs behavior without the need to invoking markdown mode manually each time I want to edit the inside of the environment?

## 1 Answer

You can use mmm-mode available at GNU Elpa.

There are examples how mmm-mode is to be configured.

In your case the following Elisp lines in your init file should work.

When you open a LaTeX file with markdown environments those are highlighted in grey. If you put point within those regions markdown-mode becomes active (e.g., indentation). When you write a new markdown environment per hand you should run Parse Block from the MMM menu. This is automagically done for you if you insert a markdown environment by C-c C-e (bound to LaTeX-environment).

(require 'mmm-auto)
(setq mmm-global-mode 'maybe)
(mmm-add-classes
'((latex-markdown
:submode markdown-mode
:face mmm-declaration-submode-face
:front "\\\\begin{markdown}"
:delimiter-mode nil
:back "\\\\end{markdown}")))
(mmm-add-mode-ext-class 'latex-mode nil 'latex-markdown)

(defun my-LaTeX-parse-block-after-insert-environment (env _b _e)
"Parse MMM block after inserting a markdown environment.
mmm-parse-block' is only called when ENV is \"markdown\"."
(when (string-equal env "markdown")
(mmm-parse-block 3)))

(add-hook 'LaTeX-after-insert-env-hook #'my-LaTeX-parse-block-after-insert-environment)
`