Emacs/yasnipettで、やさしいコードスニペットの作り方

コーディングの頻出パターンを小さなコード片(スニペット)として保存すると楽だけど、yasnipett一度作ってみないと書きにくいよね!って話


たとえば、

class MyClass(object):
    def __init__(self):
        print "Hello"
    def __repr__(self):
        return self

これは実際に、記述すべき内容は "MyClass"ぐらいで、他は外部からその都度呼び出せばいいじゃん、という感じで作られたのがyasnipetts


classと書いてからTabをうつと
http://gyazo.com/69a141645fa5888822de8d1120f6e230.png


ダウンロードとかインストールはyasnippet - Project Hosting on Google Codeから


設定ファイルにはこれぐらい書いておけば大丈夫

(require 'yasnippet)
(yas/initialize)
(yas/load-directory "~/.emacs.d/snippets/")

最初からある程度のスニペットは同梱されてます

超簡単なsnipetts作例

スニペットごとき作るの迷っていては、その分コーディングしたほうがマシ。シンプルに考えましょう。


snipetts/text-mode/hogehoge が共通のスニペット
snipetts/text-mode/*-mode/hogehoge がmodeに対応するスニペット
モードごとの継承関係で引き継がれているようです


snipetts/text-mode/hello

#name : hello
# --
Hello, new snipetts!
$0

ね、簡単でしょ?
# -- ではじまって、 $0 で終了です


引数をとりたいときは $1 , $2 .... とする。 $0 に辿りついたら終了

#name : greeding
# --
Hello, $1!
$1 is your name.
My name is $2
$0

スニペット記述用のスニペット

メタスニペット的な何か


~/.emacs.d/snipetts/text-mode/snipetts

#contributor : mizchi <miz404@gmail.com>
#name : snipetts
# --
#contributor : mizchi <miz404@gmail.com>
#name : $1
# --
$0

snipettsで展開する

Anythingからyasnipettsしようぜ!

Anythingキチガイにはanything-c-source-yas-completeするのがおすすめ
シンタックスうろ覚えでもコード書ける!!

http://gyazo.com/facf351dd603ed05229fb83433201d32.png

例:

(global-set-key "\C-t" 'anything-c-yas-complete)

http://svn.coderepos.org/share/lang/elisp/anything-c-yasnippet/anything-c-yasnippet.el からDL
yasnippet, anything-c-yasnippetのまとめエントリー - IMAKADO::BLOG


yasnipett0.6.1以上だと動かないのでパッチ当てる。
yasnippet-0.6.1b(c?)を使うとanything-c-yasnippet.elが動かない - 放牧日記