+++ /dev/null
-;;; jinja.el --- Jinja mode highlighting
-;;
-;; Author: Georg Brandl
-;; Copyright: (c) 2009 by the Jinja Team
-;; Last modified: 2008-05-22 23:04 by gbr
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Commentary:
-;;
-;; Mostly ripped off django-mode by Lennart Borgman.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; 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:
-
-(defconst jinja-font-lock-keywords
- (list
-; (cons (rx "{% comment %}" (submatch (0+ anything))
-; "{% endcomment %}") (list 1 font-lock-comment-face))
- '("{# ?\\(.*?\\) ?#}" . (1 font-lock-comment-face))
- '("{%-?\\|-?%}\\|{{\\|}}" . font-lock-preprocessor-face)
- '("{#\\|#}" . font-lock-comment-delimiter-face)
- ;; first word in a block is a command
- '("{%-?[ \t\n]*\\([a-zA-Z_]+\\)" . (1 font-lock-keyword-face))
- ;; variables
- '("\\({{ ?\\)\\([^|]*?\\)\\(|.*?\\)? ?}}" . (1 font-lock-variable-name-face))
- ;; keywords and builtins
- (cons (rx word-start
- (or "in" "as" "recursive" "not" "and" "or" "if" "else"
- "import" "with" "without" "context")
- word-end)
- font-lock-keyword-face)
- (cons (rx word-start
- (or "true" "false" "none" "loop" "self" "super")
- word-end)
- font-lock-builtin-face)
- ;; tests
- '("\\(is\\)[ \t]*\\(not\\)[ \t]*\\([a-zA-Z_]+\\)"
- (1 font-lock-keyword-face) (2 font-lock-keyword-face)
- (3 font-lock-function-name-face))
- ;; builtin filters
- (cons (rx
- "|" (* space)
- (submatch
- (or "abs" "batch" "capitalize" "capture" "center" "count" "default"
- "dformat" "dictsort" "e" "escape" "filesizeformat" "first"
- "float" "format" "getattribute" "getitem" "groupby" "indent"
- "int" "join" "jsonencode" "last" "length" "lower" "markdown"
- "pprint" "random" "replace" "reverse" "round" "rst" "slice"
- "sort" "string" "striptags" "sum" "textile" "title" "trim"
- "truncate" "upper" "urlencode" "urlize" "wordcount" "wordwrap"
- "xmlattr")))
- (list 1 font-lock-builtin-face))
- )
- "Minimal highlighting expressions for Jinja mode")
-
-(define-derived-mode jinja-mode nil "Jinja"
- "Simple Jinja mode for use with `mumamo-mode'.
-This mode only provides syntax highlighting."
- ;;(set (make-local-variable 'comment-start) "{#")
- ;;(set (make-local-variable 'comment-end) "#}")
- (setq font-lock-defaults '(jinja-font-lock-keywords)))
-
-;; mumamo stuff
-(when (require 'mumamo nil t)
-
- (defun mumamo-chunk-jinja3 (pos max)
- "Find {# ... #}"
- (mumamo-quick-chunk-forward pos max "{#" "#}" 'borders 'jinja-mode))
-
- (defun mumamo-chunk-jinja2 (pos max)
- "Find {{ ... }}"
- (mumamo-quick-chunk-forward pos max "{{" "}}" 'borders 'jinja-mode))
-
- (defun mumamo-chunk-jinja (pos max)
- "Find {% ... %}"
- (mumamo-quick-chunk-forward pos max "{%" "%}" 'borders 'jinja-mode))
-
-;;;###autoload
- (define-mumamo-multi-major-mode jinja-html-mumamo
- "Turn on multiple major modes for Jinja with main mode `html-mode'.
-This also covers inlined style and javascript."
- ("Jinja HTML Family" html-mode
- (mumamo-chunk-jinja
- mumamo-chunk-jinja2
- mumamo-chunk-jinja3
- mumamo-chunk-inlined-style
- mumamo-chunk-inlined-script
- mumamo-chunk-style=
- mumamo-chunk-onjs=
- )))
-
-;;;###autoload
- (define-mumamo-multi-major-mode jinja-nxhtml-mumamo
- "Turn on multiple major modes for Jinja with main mode `nxhtml-mode'.
-This also covers inlined style and javascript."
- ("Jinja nXhtml Family" nxhtml-mode
- (mumamo-chunk-jinja
- mumamo-chunk-jinja2
- mumamo-chunk-jinja3
- mumamo-chunk-inlined-style
- mumamo-chunk-inlined-script
- mumamo-chunk-style=
- mumamo-chunk-onjs=
- )))
- )
-
-(provide 'jinja)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; jinja.el ends here