- yatemplate 20161108.1305(in MELPA)
- File templates with yasnippet
概要
auto-insert-mode は新規ファイル作成時に
決まった内容のテンプレートを用意したり、
特定の関数を実行できたりします。
一方で yasnippet.el はいまや鉄板の強力テンプレートです。
しかし、yasnippet.el登場後8年くらいたつにもかかわらず
なぜか両者を組み合わせる機能がないです。
yatemplate.el を使えば、auto-insertのテンプレートをyasnippetにできます。
使い方は簡単で、 ~/.emacs.d/templates/ 以下に
決められたファイル名でyasnippetファイルを配置するだけです。
ファイル名は1つのコロンで区切られていて、
「番号:正規表現」と指定します。
番号は auto-insert-alist へ追加する順序を指定するために必要です。
たとえば
- ~/.emacs.d/templates/00:test_.*.py
- ~/.emacs.d/templates/01:.*.py
というyatemplateファイルがあったとき、
test_*.py の方が優先されます。
開発して日が浅いため(2/28から)まだ荒削りなので設定で対処しています。
- yatemplateファイルを snippet-mode にする
- yatemplateファイル追加時に即 auto-insert-alist に反映させる
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてyatemplateを使う方は
以下のコマンドを実行します。
M-x package-install yatemplate
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name yatemplate
設定 150306045100.yatemplate.el(以下のコードと同一)
(yatemplate-fill-alist) (auto-insert-mode 1) (defun find-file-hook--yatemplate () "yatemplateのsnippetのテストができるようにするためにsnippet-modeにする" (when (string-match "emacs.*/templates/" buffer-file-name) (let ((mode major-mode)) (snippet-mode) (setq-local yas--guessed-modes (list mode))))) (add-hook 'find-file-hook 'find-file-hook--yatemplate) (defun after-save-hook--yatemplate () "yatemplateファイル保存後、auto-insert-alistに反映させる" (when (string-match "emacs.*/templates/" buffer-file-name) (yatemplate-fill-alist))) (add-hook 'after-save-hook 'after-save-hook--yatemplate)
実行方法
$ wget http://rubikitch.com/f/150306045100.yatemplate.el $ emacs -Q -f package-initialize -l 150306045100.yatemplate.el
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。