新規ファイル作成時に使用するテンプレートファイルを指定して作成
auto-insert では、ファイル名(拡張子等)以外で使用するテンプレートファイルの切り替えが出来なかったので、ちょっと改造してみました。
元となった elisp はこちらです。
http://www.02.246.ne.jp/~torutk/cxx/emacs/mode_extension.html
[before]
;; 〜〜〜〜〜〜〜〜〜〜 (setq auto-insert-alist (append '( ("\\.cpp$" . ["template.cpp" my-template]) ("\\.h$" . ["template.h" my-template]) ) auto-insert-alist)) (add-hook 'find-file-hooks 'auto-insert) ;; 〜〜〜〜〜〜〜〜〜〜
[after]
;; 〜〜〜〜〜〜〜〜〜〜 (setq auto-insert-alist (append '( ("\\.cpp$" . [read-template-file my-template]) ("\\.h$" . [read-template-file my-template]) ("\\.hpp$" . [read-template-file my-template]) ) auto-insert-alist)) (add-hook 'find-file-hooks 'auto-insert) ;; 新規ファイル作成時に使用するテンプレートファイルを設定するように追加 (defun read-template-file () (setq template-file (read-from-minibuffer "template-file :")) (insert-file-contents (concat my-template-file-directory (concat "/" template-file)))) ;; 〜〜〜〜〜〜〜〜〜〜
新規ファイル作成時に使用するテンプレートファイル名を指定して、バッファにコピーするように処理を追加しました。
これで、同じ cpp ファイルでも使用するテンプレートファイルを切り替えることが出来ます。
elisp 的にこれで合っているのか分かりませんが、とりあえず満足。