コードスニペット挿入マクロ (CompleteX 用プラグイン)
[古いマクロ] このマクロの機能は YASnippet Hidemarized へ移行しました。今では作者自身もこのマクロを使っていません。(2011/10/01)
通常の辞書とは別にスニペット辞書を用意します。スニペット辞書は次のようなファイルです。
[snippet] 単語=コード片 単語=コード片 …
CompleteX で確定した単語がスニペット辞書に見つかると、 Snippet.mac は単語をコード片に置き換えて挿入します。スニペット辞書にない場合は確定した単語がそのまま挿入されます。以下に例を挙げて説明します。
[.sh] plugin=snippet.mac dic=bash.dic … 単語辞書 snippet.dic=bash.sub … スニペット辞書
case echo for while
[snippet] while=while [ ]; do\n\t\ndone
上記の設定で while を確定すると
while [ ]; do <tab> done
が挿入されます。このように、 \n
で改行、 \t
でタブを記述できます。確定時のカーソル行のインデントに合わせて次行以降もインデントされます*1。
[snippet] echo=echo "\v"
上記の設定で echo を確定すると
echo ""
が挿入され、"" の間にカーソルが移動します。このように、 \v
で確定後のカーソル位置を指定できます。 \v
が複数ある場合は例3と同様の動作になります。
[snippet] case="case \v変数\f in\n\v条件1\f)\n\t\v処理1\f;;\n\v条件2\f)\n\t\v処理2\f;;\n*)\n\t\vデフォルト処理\f;;\nesac"
上記の設定で case を確定すると
case 変数 in 条件1) 処理1;; 条件2) 処理2;; *) デフォルト処理;; esac
が挿入され、変数 が範囲選択されます*2*3。ここで下候補(デフォルトのキー割り当てなら [F3])を実行すると 条件1、 処理1、 条件2、 処理2、 デフォルト処理 が順に範囲選択されます。このように、 \v 〜 \f
で囲んで記述例や説明文を書いておくと確定後に検索することができます。
設定は CompleteX の設定ファイル config.txt に追記します。〈→CompleteX リファレンス:設定ファイルの書き方〉
snippet.dic=bash.sub
上記のほか、 CompleteX の各設定が有効です。
スニペット辞書は INI ファイル形式です。セクション名は [snippet] です。各エントリの左辺は CompleteX で確定される文字列、右辺はそれを置き換えるコード片です。*1
[snippet] case=case \v変数\f in\n\v条件1\f)\n\t\v処理1\f;;\n\v条件2\f)\n\t\v処理2\f;;\n*)\n\t\vデフォルト処理\f;;\nesac echo=echo "\v" for=for \v in \vリスト\f; do\n\t\ndone if=if [ \v ]; then\n\t\nelif\n\t\nelse\n\t\nfi while=while [ \v ]; do\n\t\ndone
コード片は以下のエスケープシーケンスを含むことができます。
\n … 改行 \t … タブ \v … 確定後のカーソル位置/選択範囲の始まり \f … 選択範囲の終わり \\ … \ という文字そのもの
一次配布場所は Wisteria - 秀丸マクロ - Snippet.mac です。二次配布は次のところで行われています。
\a
から \v
に変更(垂直タブは大抵のプログラミング言語で空白類文字として扱われるので、削除し忘れても影響が少ない)
source=self
, source=mix
, source=list
に対応
ご意見、ご感想、バグ報告、ツッコミなどは 談話室 へどうぞ。