牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Emacs の jinja2-mode で Django のテンプレートを書くための設定メモ

※追記20130728: インデントの問題、複数行コメントの問題

(Emacs24.3)

web-mode でやろうとしたら タブ に色付けできなかったり、設定変えるの面倒そうだったので jinja2-mode を使ってみる事にした

インストール

M-x list-packages で jinja2-mode をインストール

auto-complete, yasnippet はインストール済み前提で

yasnippet

yasnippet の snippets に web-mode ディレクトリを作ってファイル作成

html-modeのスニペットをjinja2-modeで共用する

snippets /.yas-parents
html-mode

インデントがずれる問題

Djangoの特定のタグでインデントがずれるのでキーワードを追加した(jinja2-user-keywords )

複数行コメントの問題

このモード、複数行のコメントに対応してないのだが、Emacs複数行で色付けする方法がわからない。
とりあえず {% comment %} と {% endcomment %} タグに色を付けてみた。
誰か ヘルプ ミー プリーズ。

init.el

(add-to-list 'auto-mode-alist '("\\.html\\'" . jinja2-mode))
(add-to-list 'ac-modes 'jinja2-mode)
(add-hook 'jinja2-mode-hook
          (lambda ()
            (defun jinja2-closing-keywords ()
              (append
               jinja2-user-keywords
               '("if" "for" "block" "filter" "with"
                 "raw" "macro" "autoescape" "trans" "call"
                 "comment" "ifchanged" "ifequal" "ifnotequal"
                 "spaceless" "with" "block"
                 )))
            (defun django-highlight-comment-tag ()
              (interactive "p")
              (highlight-regexp "{% comment %}" 'hi-pink)
              (highlight-regexp "{% endcomment %}" 'hi-pink)
              )
            (django-highlight-comment-tag)
            (setq sgml-basic-offset 4)
            (define-key jinja2-mode-map (kbd "C-M-n") 'sgml-skip-tag-forward)
            (define-key jinja2-mode-map (kbd "C-M-p") 'sgml-skip-tag-backward)
            (add-to-list 'ac-sources 'ac-source-yasnippet)
            (add-to-list 'ac-sources 'ac-source-dictionary)
            (add-to-list 'ac-sources 'ac-source-filename)
            (add-to-list 'ac-sources 'ac-source-words-in-all-buffer)
            )
          )

表示してみる