legacy-dotfiles/emacs.d/nxhtml/nxhtml/nxhtml-mumamo.el
Tom Willemsen 94d2fc1815 Django, org
* Added nxhtml, mostly for django support.

  * Changed some org settings.
2011-03-07 09:04:49 +01:00

365 lines
12 KiB
EmacsLisp
Raw Blame History

;;; nxhtml-mumamo.el --- Multi major modes using nxhtml
;;
;; Author: Lennart Borgman (lennart O borgman A gmail O com)
;; Created: 2008-03-10T19:04:20+0100 Mon
(defconst nxhtml-mumamo:version "0.5")
;; Last-Updated: 2009-01-06 Tue
;; URL:
;; Keywords:
;; Compatibility:
;;
;; Features that might be required by this library:
;;
;; `backquote', `bytecomp', `mumamo', `mumamo-fun'.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:
;;
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Change log:
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
;; Floor, Boston, MA 02110-1301, USA.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Code:
(eval-when-compile (require 'cl))
(eval-when-compile (require 'nxhtml nil t))
(eval-when-compile (require 'nxhtml-base))
(eval-when-compile (require 'nxhtml-mode))
(eval-when-compile (require 'mumamo))
(eval-and-compile (require 'mumamo-fun))
(eval-when-compile (require 'rng-valid nil t))
;;(mumamo-fun-require)
;; (defgroup nxhtml-auto-val-head nil
;; "Automatic turn on of XHTML validation headers."
;; :group 'nxhtml)
;; (defmacro define-fictive-validation-header-toggle (fun-sym default-value)
;; (let* ((fun-name (symbol-name fun-sym))
;; (custom-sym (intern (concat fun-name "-auto-val-head")))
;; (hook-sym (intern-soft (concat fun-name "-hook")))
;; (docstring
;; (concat "Automatic XHTML validation header for `" fun-name "'.
;; <20>")))
;; (assert hook-sym)
;; `(defcustom ,custom-sym ,default-value
;; ,docstring
;; :type 'boolean
;; :set (lambda (sym val)
;; (set-default sym val)
;; (if val
;; (add-hook ',hook-sym 'nxhtml-turn-on-validation-header-mode)
;; (remove-hook ',hook-sym 'nxhtml-turn-on-validation-header-mode)))
;; :group 'nxhtml-auto-val-head)
;; ))
;; Fix-me: add chunk type attr string as last alternative. This will
;; allow things like myattr="<?php echo ?>".
;;;###autoload
(define-mumamo-multi-major-mode nxhtml-mumamo-mode
"Turn on multiple major modes for (X)HTML with main mode `nxhtml-mode'.
This covers inlined style and javascript and PHP.
See also `mumamo-alt-php-tags-mode'."
("nXhtml Family" nxhtml-mode
(mumamo-chunk-xml-pi
mumamo-chunk-alt-php
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
(add-hook 'nxhtml-mumamo-mode-hook 'mumamo-define-html-file-wide-keys)
;;(define-fictive-validation-header-toggle nxhtml-mumamo-mode t)
;;;###autoload
(define-mumamo-multi-major-mode embperl-nxhtml-mumamo-mode
"Turn on multiple major modes for Embperl files with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
("Embperl nXhtml Family" nxhtml-mode
(mumamo-chunk-embperl-<-
mumamo-chunk-embperl-<+
mumamo-chunk-embperl-<!
mumamo-chunk-embperl-<$
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
;;;###autoload
(define-mumamo-multi-major-mode django-nxhtml-mumamo-mode
"Turn on multiple major modes for Django with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
("Django nXhtml Family" nxhtml-mode
(mumamo-chunk-django4
mumamo-chunk-django
mumamo-chunk-django2
mumamo-chunk-django3
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
;;;###autoload
(define-mumamo-multi-major-mode mason-nxhtml-mumamo-mode
"Turn on multiple major modes for Mason using main mode `nxhtml-mode'.
This covers inlined style and javascript."
("Mason nxhtml Family" nxhtml-mode
(
mumamo-chunk-mason-perl-line
mumamo-chunk-mason-perl-single
mumamo-chunk-mason-perl-block
mumamo-chunk-mason-perl-init
mumamo-chunk-mason-perl-once
mumamo-chunk-mason-perl-cleanup
mumamo-chunk-mason-perl-shared
mumamo-chunk-mason-simple-comp
mumamo-chunk-mason-compcont
mumamo-chunk-mason-args
mumamo-chunk-mason-doc
mumamo-chunk-mason-text
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
(add-hook 'mason-nxhtml-mumamo-mode-hook 'mumamo-define-html-file-wide-keys)
;;(mumamo-inherit-sub-chunk-family-locally 'mason-nxhtml-mumamo-mode 'mason-nxhtml-mumamo-mode)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Genshi / kid
(define-derived-mode nxhtml-genshi-mode nxhtml-mode "gXhtml"
"Like `nxhtml-mode' but with Genshi rnc.
You should not use this! This is just a part of
`genshi-nxhtml-mumamo-mode', use that instead."
(let* ((schema-dir (expand-file-name "etc/schema/" nxhtml-install-dir))
(genshi-rnc (expand-file-name "qtmstr-xhtml.rnc" schema-dir)))
;;(message "nxhtml-src-dir =%s" nxhtml-src-dir)
(message "schema-dir =%s" schema-dir)
(when (or (not rng-current-schema-file-name)
(string= "xhtml.rnc" (file-name-nondirectory rng-current-schema-file-name)))
(condition-case err
(progn
(rng-set-schema-file-1 genshi-rnc)
(rng-what-schema)
;;(rng-save-schema-location-1 t)
)
(nxml-file-parse-error
(nxml-display-file-parse-error err)))
(when rng-validate-mode
(rng-validate-mode -1)
(rng-validate-mode 1)))))
;;;###autoload
(define-mumamo-multi-major-mode genshi-nxhtml-mumamo-mode
"Turn on multiple major modes for Genshi with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
("Genshi HTML Family" nxhtml-genshi-mode
(;;mumamo-chunk-genshi%
mumamo-chunk-genshi$
mumamo-chunk-py:=
mumamo-chunk-py:match
mumamo-chunk-xml-pi
;;mumamo-chunk-alt-php
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; MJT
;; MJT is run in the browser. Some new tags and attributes are used.
(define-derived-mode nxhtml-mjt-mode nxhtml-mode "mjtXhtml"
"Like `nxhtml-mode' but with genshi rnc.
You should not use this! This is just a part of
`mjt-nxhtml-mumamo-mode', use that instead."
(let* ((schema-dir (expand-file-name "etc/schema/" nxhtml-install-dir))
(genshi-rnc (expand-file-name "mjt.rnc" schema-dir)))
;;(message "nxhtml-src-dir =%s" nxhtml-src-dir)
(message "schema-dir =%s" schema-dir)
(when (or (not rng-current-schema-file-name)
(string= "xhtml.rnc" (file-name-nondirectory rng-current-schema-file-name)))
(condition-case err
(progn
(rng-set-schema-file-1 genshi-rnc)
(rng-what-schema)
;;(rng-save-schema-location-1 t)
)
(nxml-file-parse-error
(nxml-display-file-parse-error err)))
(when rng-validate-mode
(rng-validate-mode -1)
(rng-validate-mode 1)))))
;;;###autoload
(define-mumamo-multi-major-mode mjt-nxhtml-mumamo-mode
"Turn on multiple major modes for MJT with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
("MJT nXhtml Family" nxhtml-mjt-mode
(
mumamo-chunk-mjt$
mumamo-chunk-xml-pi
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Smarty
;;;###autoload
(define-mumamo-multi-major-mode smarty-nxhtml-mumamo-mode
"Turn on multiple major modes for Smarty with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
("Smarty nXhtml Family" nxhtml-mode
(mumamo-chunk-xml-pi
mumamo-chunk-style=
mumamo-chunk-onjs=
;;mumamo-chunk-inlined-style
;;mumamo-chunk-inlined-script
mumamo-chunk-smarty-literal
mumamo-chunk-smarty-t
mumamo-chunk-smarty-comment
mumamo-chunk-smarty
)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; GSP
;;;###autoload
(define-mumamo-multi-major-mode gsp-nxhtml-mumamo-mode
"Turn on multiple major modes for GSP with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
("GSP nXhtml Family" nxhtml-mode
(mumamo-chunk-gsp
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; JSP
;;;###autoload
(define-mumamo-multi-major-mode jsp-nxhtml-mumamo-mode
"Turn on multiple major modes for JSP with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
("JSP nXhtml Family" nxhtml-mode
(mumamo-chunk-jsp
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; eRuby
;;;###autoload
(define-mumamo-multi-major-mode eruby-nxhtml-mumamo-mode
"Turn on multiple major modes for eRuby with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
("eRuby nXhtml Family" nxhtml-mode
(mumamo-chunk-eruby
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; ASP
;;;###autoload
(define-mumamo-multi-major-mode asp-nxhtml-mumamo-mode
"Turn on multiple major modes for ASP with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
("ASP nXhtml Family" nxhtml-mode
(mumamo-chunk-asp%
mumamo-asp-chunk-inlined-script
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Mako
;;;###autoload
(define-mumamo-multi-major-mode mako-nxhtml-mumamo-mode
"Turn on multiple major modes for Mako with main mode `nxhtml-mode'.
This also covers inlined style and javascript."
;; Fix-me: test case
;;
;; Fix-me: Add chunks for the tags, but make sure these are made
;; invisible to nxml-mode parser.
;;
;; Fix-me: Maybe finally add that indentation support for one-line chunks?
("Mako nXhtml Family" nxhtml-mode
(
mumamo-chunk-mako-one-line-comment
mumamo-chunk-mako-<%doc
mumamo-chunk-mako-<%include
mumamo-chunk-mako-<%inherit
mumamo-chunk-mako-<%namespace
mumamo-chunk-mako-<%page
;;mumamo-chunk-mako-<%def
;;mumamo-chunk-mako-<%call
;;mumamo-chunk-mako-<%text
mumamo-chunk-mako-<%
mumamo-chunk-mako-%
mumamo-chunk-mako$
mumamo-chunk-xml-pi
mumamo-chunk-inlined-style
mumamo-chunk-inlined-script
mumamo-chunk-style=
mumamo-chunk-onjs=
)))
;; Fix-me: This caused mumamo to loop during fontification since
;; fmode-replace-default-mode was not defined. Mumamo tried to load
;; the function in mumamo-fetch-major-mode-setup in (funcall major)
;; where major mode is php-mode.
;;(eval-after-load 'php-mode '(fmode-replace-default-mode 'php-mode 'nxhtml-mumamo-mode))
(provide 'nxhtml-mumamo)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; nxhtml-mumamo.el ends here