[Haskell] Re: lhs2TeX-friendly emacs mode?
Nils Anders Danielsson
nad at cs.chalmers.se
Tue Apr 18 07:23:18 EDT 2006
On Mon, 17 Apr 2006, "Conal Elliott" <conal at conal.net> wrote:
> Does anyone on this list use mmm-mode for Haskell+LaTeX?
I do. The following code snippet (which should be cleaned up a little)
from my .emacs makes the above combination work fairly well for me:
;;; mmm-mode
(add-to-list 'load-path "~/install/usr/share/emacs/site-lisp/mmm-mode/" t)
(require 'mmm-auto)
; The following expression was stolen from the Haskell Wiki, then
; modified extensively by me.
(mmm-add-classes
'((literate-haskell
:classes (literate-haskell-bird
literate-haskell-laTeX
)
)
(literate-haskell-bird
:submode literate-haskell-mode
:front "^>"
:include-front t
:back "^[^>]\\|\\'"
:include-back nil
:insert ((?b insert-literate-haskell-bird-region
nil
@ ">" @ " " _ @ "\n" @ "\n"))
)
(literate-haskell-laTeX
:submode haskell-mode
:front "^\\\\begin{code}\n"
:include-front nil
:back "^\\\\end{code}"
:include-back nil
:insert ((?l insert-literate-haskell-laTeX-region
nil
@ "\\begin{code}\n" @ _ @ "\\end{code}" @ "\n"))
)
(literate-haskell-lhs2TeX
:classes (literate-haskell-lhs2TeX-code
literate-haskell-lhs2TeX-bird-code
literate-haskell-lhs2TeX-bird-spec
; The following two modes cause mmm-parse-buffer to go
; into a loop for || and @@.
; literate-haskell-lhs2TeX-verb
; literate-haskell-lhs2TeX-inline
)
)
(literate-haskell-lhs2TeX-code
:submode haskell-mode
:front "^\\\\begin{code}\\|^\\\\begin{spec}"
:front-offset (end-of-line 1)
:back "^\\\\end{code}\\|^\\\\end{spec}"
:back-offset (beginning-of-line -1)
)
(literate-haskell-lhs2TeX-bird-code
:submode literate-haskell-mode
:front "^> "
:include-front true
:back "^[^>]"
:back-offset (beginning-of-line -1)
)
; literate-haskell-mode doesn't understand <...
; mmm-mode doesn't handle :back "$" :back-offset 0 very well. The
; keyboard bindings of the two modes aren't handled correctly.
(literate-haskell-lhs2TeX-bird-spec
:submode haskell-mode
:front "^< "
:back "^[^>]"
:back-offset -1
)
(literate-haskell-lhs2TeX-verb
:submode haskell-mode
:front "@"
:back "@"
:back-offset -1
)
(literate-haskell-lhs2TeX-inline
:submode haskell-mode
:front "|"
:back "|"
:back-offset -1
)
)
)
(dolist (entry '((flyspell-prog-text-faces region)
(flyspell-generic-check-word-p region)
(haskell-literate region (haskell literate-haskell))
))
(add-to-list 'mmm-save-local-variables entry))
These variables are set by custom-set-variables:
'(mmm-global-mode (quote maybe) nil (mmm-mode))
'(mmm-mode-ext-classes-alist (quote ((latex-mode "\\.lhs$" literate-haskell-lhs2TeX) (text-mode "\\.lhs$" literate-haskell))) nil (mmm-mode))
'(mmm-submode-decoration-level 2)
--
/NAD
More information about the Haskell
mailing list