Emacsで Perlのひな形を挿入する
Big Sky :: ファイルタイプ別にテンプレートを選べるsonictemplate-vim書いた
Emacsだと、yasnippetを使えば同様のことができます。Vimでも yasnippetが
あるらしいので、それでできないのかなとも思ったんだけど、使い勝手が
違うのかな?
.pmならこれ、.plならこれと一択の場合は auto-insertを使う手もあるので、
その場合はこちらに詳しく記されています。
モジュール用のスニペット
#name : Perl Package Template # -- package ${1:`(yas/perl-package-name)`}; use strict; use warnings; $0 1; __END__
ドキュメント付きモジュールスニペット
#name : Perl Package Template with Document # -- package ${1:`(yas/perl-package-name)`}; use strict; use warnings; $0 1; __END__ =head1 NAME $1 - =head1 SYNOPSIS =head1 DESCRIPTION $1 is =head1 AUTHOR Syohei YOSHIDA E<lt>syohex@gmail.comE<gt> =head1 COPYRIGHT Copyright `(format-time-string "%Y")` - Syohei YOSHIDA =head1 SEE ALSO =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut
yas/perl-package-nameというのは以下のような関数です。
(defun yas/perl-package-name () (let ((file-path (file-name-sans-extension (buffer-file-name)))) (if (string-match "lib/" file-path) (replace-regexp-in-string "/" "::" (car (last (split-string file-path "/lib/")))) (file-name-nondirectory file-path))))
スニペットを共有する場合、オリジナルのユーティリティ関数を使わずに、
すべて埋め込んだ方が良いと思います。elispを普通に埋め込むことができる
のは強力な機能ですね。
上記のファイルを
- tmpl.script
- tmpl.package
- tmpl.package_with_doc
というような感じで yasnippetの perl-mode以下に設置すると以下のように
使えます。
'tmpl'と打ち込みトリガーキーを押す(デフォルトは "TAB")をスニペットを選ぶ.
目的のスニペットを選択し、決定.
こんな具合です。