昨日に引き続きyasnippetの話です。
yasnippet使ってたら選択範囲の周りにyasnippet展開したくなりました。例えばsubtestを現在書かれているコードの周りに囲みたいとかいう時です。
yasnippetにはyas/selected-textという、選択範囲の文字列を取得するコマンドがあったので、それが使えました。subtestの場合以下のようにします。
# -*- mode: snippet -*- # key: subtest # name: subtest # binding: C-c C-c t # -- subtest '$1' => sub { `yas/selected-text`$0 };
こうしておけば何も選択されないときはそのままsubtestが貼り付けられて、選択されていた場合はwrapして貼り付けることができます。
同様にDBIx::QueryLogとかでも便利に使えます。
# -*- mode: snippet -*- # key: wrap-querylog # name: DBIx::QueryLog wrap # -- use DBIx::QueryLog (); DBIx::QueryLog->begin; `yas/selected-text`$0 DBIx::QueryLog->end;