autoinsertで対話形式でテンプレートを作る
これの利点はプライベートと仕事でメールアドレスやコピーライトが違ったりするときにその場でテンプレートの各部分を変更して挿入できる点だと思います。
例としてPerlの.pm、.pl、.cgiという拡張子のファイルを作成する際のコードを下記に書いておきます。このコードの各部分を適当に編集すればそのまま使えるはずです。
これを.emacsに設定しておけば、ファイルを作成する際に「Your e-mail: 」「Copyright: 」というのプロンプトがミニバッファーに出て入力待ちになるので、そこで入力したものがテンプレートに挿入されます。なにも入力をしないでリターンをすればデフォルトで設定されているものが挿入されるので、デフォルトのものはよく使うメールアドレスとコピーライトを設定しておけばよいでしょう。
elispは得意ではないので、もっと効率よい方法もあると思いますので、その辺は適宜変更して下さい。
;; auto-insert
(require 'autoinsert)
(add-hook 'find-file-not-found-hooks 'auto-insert)
(add-hook 'find-file-hooks 'auto-insert)
(setq auto-insert-alist
(append
'(
(("\\.pm$" . "Perl Module Header")
"Your e-mail: "
"package " _ ";
# $Id$
#
# Your Name <" str | (setq insert "foo@example.com") ">
# " (read-string "Copyright: ") | (setq insert "Example Co.,Ltd.") "
#
use strict;
1;")
(("\\.pl$" . "Perl Script Header")
"Your e-mail: "
"#!/usr/local/bin/perl
# $Id$
#
# Your Name <" str | (setq insert "foo@example.com") ">
# " (read-string "Copyright: ") | (setq insert "Example Co.,Ltd.") "
#
use strict;
" _ )
(("\\.cgi$" . "CGI Script Header")
"Your e-mail: "
"#!/usr/local/bin/perl
# $Id$
#
# Your Name <" str | (setq insert "foo@example.com") ">
# " (read-string "Copyright: ") | (setq insert "Example Co.,Ltd.") "
#
use strict;
" _ ))
auto-insert-alist))