aboutsummaryrefslogtreecommitdiffhomepage
path: root/contrib/mmm/mmm-sample.el
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/mmm/mmm-sample.el')
-rw-r--r--contrib/mmm/mmm-sample.el374
1 files changed, 0 insertions, 374 deletions
diff --git a/contrib/mmm/mmm-sample.el b/contrib/mmm/mmm-sample.el
deleted file mode 100644
index daf663c4..00000000
--- a/contrib/mmm/mmm-sample.el
+++ /dev/null
@@ -1,374 +0,0 @@
-;;; mmm-sample.el --- Sample MMM submode classes
-
-;; Copyright (C) 2003, 2004 by Michael Abraham Shulman
-
-;; Author: Michael Abraham Shulman <viritrilbia@users.sourceforge.net>
-;; Version: $Id$
-
-;;{{{ GPL
-
-;; This file 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 file 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 GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;}}}
-
-;;; Commentary:
-
-;; This file contains several sample submode classes for use with MMM
-;; Mode. For a more detailed and useful example, see `mmm-mason.el'.
-
-;;; Code:
-
-(require 'mmm-auto)
-(require 'mmm-vars)
-
-;;{{{ CSS embedded in HTML
-
-;; This is the simplest example. Many applications will need no more
-;; than a simple regexp.
-(mmm-add-classes
- '((embedded-css
- :submode css
- :face mmm-declaration-submode-face
- :delimiter-mode nil
- :front "<style[^>]*>"
- :back "</style>")))
-
-;;}}}
-;;{{{ Javascript in HTML
-
-;; We use two classes here, one for code in a <script> tag and another
-;; for code embedded as a property of an HTML tag, then another class
-;; to group them together.
-(mmm-add-group
- 'html-js
- '((js-tag
- :submode javascript
- :face mmm-code-submode-face
- :delimiter-mode nil
- :front "<script\[^>\]*\\(language=\"javascript\\([0-9.]*\\)\"\\|type=\"text/javascript\"\\)\[^>\]*>"
- :back"</script>"
- :insert ((?j js-tag nil @ "<script language=\"JavaScript\">"
- @ "\n" _ "\n" @ "</script>" @))
- )
- (js-inline
- :submode javascript
- :face mmm-code-submode-face
- :delimiter-mode nil
- :front "on\\w+=\""
- :back "\"")))
-
-;;}}}
-;;{{{ Here-documents
-
-;; Here we match the here-document syntax used by Perl and shell
-;; scripts. We try to be automagic about recognizing what mode the
-;; here-document should be in. To make sure that it is recognized
-;; correctly, the name of the mode, perhaps minus `-mode', in upper
-;; case, and/or with hyphens converted to underscores, should be
-;; separated from the rest of the here-document name by hyphens or
-;; underscores.
-
-(defvar mmm-here-doc-mode-alist '()
- "Alist associating here-document name regexps to submodes.
-Normally, this variable is unnecessary, as the `here-doc' submode
-class tries to automagically recognize the right submode. If you use
-here-document names that it doesn't recognize, however, then you can
-add elements to this alist. Each element is \(REGEXP . MODE) where
-REGEXP is a regular expression matched against the here-document name
-and MODE is a major mode function symbol.")
-
-(defun mmm-here-doc-get-mode (string)
- (string-match "[a-zA-Z_-]+" string)
- (setq string (match-string 0 string))
- (or (mmm-ensure-modename
- ;; First try the user override variable.
- (some #'(lambda (pair)
- (if (string-match (car pair) string) (cdr pair) nil))
- mmm-here-doc-mode-alist))
- (let ((words (split-string (downcase string) "[_-]+")))
- (or (mmm-ensure-modename
- ;; Try the whole name, stopping at "mode" if present.
- (intern
- (mapconcat #'identity
- (nconc (ldiff words (member "mode" words))
- (list "mode"))
- "-")))
- ;; Try each word by itself (preference list)
- (some #'(lambda (word)
- (mmm-ensure-modename (intern word)))
- words)
- ;; Try each word with -mode tacked on
- (some #'(lambda (word)
- (mmm-ensure-modename
- (intern (concat word "-mode"))))
- words)
- ;; Try each pair of words with -mode tacked on
- (loop for (one two) on words
- if (mmm-ensure-modename
- (intern (concat one two "-mode")))
- return it)
- ;; I'm unaware of any modes whose names, minus `-mode',
- ;; are more than two words long, and if the entire mode
- ;; name (perhaps minus `-mode') doesn't occur in the
- ;; here-document name, we can give up.
- (signal 'mmm-no-matching-submode nil)))))
-
-(mmm-add-classes
- '((here-doc
- :front "<<[\"\'\`]?\\([a-zA-Z0-9_-]+\\)"
- :front-offset (end-of-line 1)
- :back "^~1$"
- :save-matches 1
- :delimiter-mode nil
- :match-submode mmm-here-doc-get-mode
- :insert ((?d here-doc "Here-document Name: " @ "<<" str _ "\n"
- @ "\n" @ str "\n" @))
- )))
-
-;;}}}
-;;{{{ Embperl
-
-(mmm-add-group
- 'embperl
- '((embperl-perl
- :submode perl
- :front "\\[\\([-\\+!\\*\\$]\\)"
- :back "~1\\]"
- :save-matches 1
- :match-name "embperl"
- :match-face (("[+" . mmm-output-submode-face)
- ("[-" . mmm-code-submode-face)
- ("[!" . mmm-init-submode-face)
- ("[*" . mmm-code-submode-face)
- ("[$" . mmm-special-submode-face))
- :insert ((?p embperl "Region Type (Character): " @ "[" str
- @ " " _ " " @ str "]" @)
- (?+ embperl+ ?p . "+")
- (?- embperl- ?p . "-")
- (?! embperl! ?p . "!")
- (?* embperl* ?p . "*")
- (?$ embperl$ ?p . "$")
- )
- )
- (embperl-comment
- :submode text-mode
- :face mmm-comment-submode-face
- :front "\\[#"
- :back "#\\]"
- :insert ((?# embperl-comment nil @ "[#" @ " " _ " " @ "#]" @))
- )))
-
-;;}}}
-;;{{{ ePerl
-
-(mmm-add-group
- 'eperl
- '((eperl-expr
- :submode perl
- :face mmm-output-submode-face
- :front "<:="
- :back ":>"
- :insert ((?= eperl-expr nil @ "<:=" @ " " _ " " @ ":>" @)))
- (eperl-code
- :submode perl
- :face mmm-code-submode-face
- :front "<:"
- :back "_?:>"
- :match-name "eperl"
- :insert ((?p eperl-code nil @ "<:" @ " " _ " " @ ":>" @)
- (?: eperl-code ?p . nil)
- (?_ eperl-code_ nil @ "<:" @ " " _ " " @ "_:>" @)))
- (eperl-comment
- :submode text
- :face mmm-comment-submode-face
- :front ":>//"
- :back "\n")
- ))
-
-;;}}}
-;;{{{ File Variables
-
-;; This submode class puts file local variable values, specified with
-;; a `Local Variables:' line as in (emacs)File Variables, into Emacs
-;; Lisp Mode. It is a good candidate to put in `mmm-global-classes'.
-
-(defun mmm-file-variables-verify ()
- ;; It would be nice to cache this somehow, which could be done in a
- ;; buffer-local variable with markers for positions, but the trick
- ;; is knowing when to expire the cache.
- (let ((bounds
- (save-excursion
- (save-match-data
- (goto-char (point-max))
- (backward-page)
- (and (re-search-forward "^\\(.*\\)Local Variables:" nil t)
- (list (match-string 1)
- (progn (end-of-line) (point))
- (and (search-forward
- (format "%sEnd:" (match-string 1))
- nil t)
- (progn (beginning-of-line)
- (point)))))))))
- (and bounds (caddr bounds)
- (save-match-data
- (string-match (format "^%s" (regexp-quote (car bounds)))
- (match-string 0)))
- (> (match-beginning 0) (cadr bounds))
- (< (match-end 0) (caddr bounds)))))
-
-(defun mmm-file-variables-find-back (bound)
- (forward-sexp)
- (if (> (point) bound)
- nil
- (looking-at "")))
-
-(mmm-add-classes
- '((file-variables
- :front ".+:"
- :front-verify mmm-file-variables-verify
- :back mmm-file-variables-find-back
- :submode emacs-lisp-mode
- :delimiter-mode nil
- )))
-
-;;}}}
-;;{{{ JSP Pages
-
-(mmm-add-group 'jsp
- `((jsp-comment
- :submode text-mode
- :face mmm-comment-submode-face
- :front "<%--"
- :back "--%>"
- :insert ((?- jsp-comment nil @ "<%--" @ " " _ " " @ "--%>" @))
- )
- (jsp-code
- :submode java
- :match-face (("<%!" . mmm-declaration-submode-face)
- ("<%=" . mmm-output-submode-face)
- ("<%" . mmm-code-submode-face))
- :front "<%[!=]?"
- :back "%>"
- :match-name "jsp"
- :insert ((?% jsp-code nil @ "<%" @ " " _ " " @ "%>" @)
- (?! jsp-declaration nil @ "<%!" @ " " _ " " @ "%>" @)
- (?= jsp-expression nil @ "<%=" @ " " _ " " @ "%>" @))
- )
- (jsp-directive
- :submode text-mode
- :face mmm-special-submode-face
- :front "<%@"
- :back "%>"
- :insert ((?@ jsp-directive nil @ "<%@" @ " " _ " " @ "%>" @))
- )))
-
-;;}}}
-;;{{{ SGML DTD
-
-;; Thanks to Yann Dirson <ydirson@fr.alcove.com> for writing and
-;; contributing this submode class.
-
-(mmm-add-classes
- '((sgml-dtd
- :submode dtd-mode
- :face mmm-declaration-submode-face
- :delimiter-mode nil
- :front "<! *doctype[^>[]*\\["
- :back "]>")))
-
-;;}}}
-;;{{{ <Perl> in httpd.conf
-
-(mmm-add-classes
- '((httpd-conf-perl
- :submode perl
- :delimiter-mode nil
- :front "<Perl>"
- :back "</Perl>")))
-
-;; Suggested Use:
-;; (mmm-add-mode-ext-class 'apache-generic-mode nil 'httpd-conf-perl)
-
-;;}}}
-;;{{{ PHP in HTML
-
-(mmm-add-group 'html-php
- '((html-php-output
- :submode php-mode
- :face mmm-output-submode-face
- :front "<\\?php *echo "
- :back "\\?>"
- :include-front t
- :front-offset 5
- :insert ((?e php-echo nil @ "<?php" @ " echo " _ " " @ "?>" @))
- )
- (html-php-code
- :submode php-mode
- :face mmm-code-submode-face
- :front "<\\?\\(php\\)?"
- :back "\\?>"
- :insert ((?p php-section nil @ "<?php" @ " " _ " " @ "?>" @)
- (?b php-block nil @ "<?php" @ "\n" _ "\n" @ "?>" @))
- )))
-
-;;}}}
-
-;; NOT YET UPDATED
-;;{{{ HTML in PL/SQL;-COM-
-;-COM-
-;-COM-;; This one is the most complex example. In PL/SQL, HTML is generally
-;-COM-;; output as a (single quote delimited) string inside a call to htp.p or
-;-COM-;; its brethren. The problem is that there may be strings outside of
-;-COM-;; htp.p calls that should not be HTML, so we need to only look inside
-;-COM-;; these calls. The situation is complicated by PL/SQL's rule that two
-;-COM-;; sequential single quotes in a string mean to put a single quote
-;-COM-;; inside the string.
-;-COM-
-;-COM-;; These functions have not been thoroughly tested, and always search
-;-COM-;; the entire buffer, ignoring START and END.
-;-COM-
-;-COM-(defun mmm-html-in-plsql (start end)
-;-COM- (save-match-data
-;-COM- (let ((case-fold-search t))
-;-COM- (and (re-search-forward "htp.p\\(\\|rn\\|rint\\)1?(" nil t)
-;-COM- (mmm-html-in-plsql-in-htp
-;-COM- ;; Find the end of the procedure call
-;-COM- (save-excursion (forward-char -1) (forward-sexp) (point))
-;-COM- start end)))))
-;-COM-
-;-COM-(defun mmm-html-in-plsql-in-htp (htp-end start end)
-;-COM- (let (beg end)
-;-COM- (or (and (re-search-forward "'" htp-end 'limit)
-;-COM- (setf beg (match-end 0))
-;-COM- ;; Find an odd number of 's to end the string.
-;-COM- (do ((lgth 0 (length (match-string 0))))
-;-COM- ((oddp lgth) t)
-;-COM- (re-search-forward "'+" nil t))
-;-COM- (setf end (1- (match-end 0)))
-;-COM- (cons (cons beg end)
-;-COM- (mmm-html-in-plsql-in-htp htp-end start end)))
-;-COM- ;; No more strings in the procedure call; look for another.
-;-COM- (and (eql (point) htp-end)
-;-COM- (mmm-html-in-plsql start end)))))
-;-COM-
-;-COM-(add-to-list 'mmm-classes-alist
-;-COM- '(htp-p (:function html-mode mmm-html-in-plsql)))
-;-COM-
-;;}}}
-
-(provide 'mmm-sample)
-
-;;; mmm-sample.el ends here \ No newline at end of file