Snippet.mac

コードスニペット挿入マクロ (CompleteX 用プラグイン)

Version 3.02 2007/02/07

[古いマクロ] このマクロの機能は YASnippet Hidemarized へ移行しました。今では作者自身もこのマクロを使っていません。(2011/10/01)

目次

スクリーンショット

ダウンロード

概要

セットアップ

  1. 秀丸エディタ ver 5.18 以降と CompleteX v3.00β4 以降をお使いですね?
  2. ダウンロードしたマクロファイルを CompleteX のベースフォルダに置きます。
  3. CompleteX の設定でプラグインとして Snippet.mac を指定します。
  4. スニペット辞書を用意し、設定ファイルにスニペット辞書ファイル名を指定します。〈→使い方

使い方

通常の辞書とは別にスニペット辞書を用意します。スニペット辞書は次のようなファイルです。

[snippet]
単語=コード片
単語=コード片

CompleteX で確定した単語がスニペット辞書に見つかると、 Snippet.mac は単語をコード片に置き換えて挿入します。スニペット辞書にない場合は確定した単語がそのまま挿入されます。以下に例を挙げて説明します。

例1

例:config.txt
[.sh]
plugin=snippet.mac
dic=bash.dic            … 単語辞書
snippet.dic=bash.sub    … スニペット辞書
例:bash.dic
case
echo
for
while
例:bash.sub
[snippet]
while=while [  ]; do\n\t\ndone

上記の設定で while を確定すると

while [  ]; do
<tab>
done

が挿入されます。このように、 \n で改行、 \t でタブを記述できます。確定時のカーソル行のインデントに合わせて次行以降もインデントされます*1

例2

例:bash.sub
[snippet]
echo=echo "\v"

上記の設定で echo を確定すると

echo ""

が挿入され、"" の間にカーソルが移動します。このように、 \v で確定後のカーソル位置を指定できます。 \v が複数ある場合は例3と同様の動作になります。

例3

例:bash.sub
[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 で囲んで記述例や説明文を書いておくと確定後に検索することができます。


*1
秀丸エディタのファイルタイプ別の設定で「自動インデント」が ON になっている場合。
*2
秀丸エディタの動作環境で「検索での表示」が「範囲選択」になっている場合。
*3
実際には範囲選択される文字列の前後に目印となる制御コードが付いています。このページ一番上のスクリーンショットを参照。

設定

設定は CompleteX の設定ファイル config.txt に追記します。〈→CompleteX リファレンス:設定ファイルの書き方

snippet.dic
スニペット辞書ファイルを指定します。ファイル名は任意です。
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	… 選択範囲の終わり
\\	… \ という文字そのもの

*1
コード片の最初か最後に空白を入れたいときは、コード片全体をダブルクオートで囲む必要があります。このとき、コード片の中のダブルクオートをエスケープする必要はありません。(INI ファイル形式の仕様)

お約束

動作環境

ライセンス

配布場所

一次配布場所は Wisteria - 秀丸マクロ - Snippet.mac です。二次配布は次のところで行われています。

謝辞

バージョン履歴

Version 3.02 (2007/02/07)
Version 3.01 (2006/11/17)
Version 3.0 (2006/08/06)
Version 3.0 beta 4 (2006/08/01)
Version 3.0 beta 3 (2006/08/01)
Version 3.0 beta 2 (2006/08/01)
Version 3.0 beta 1 (2006/08/01)

フィードバック

ご意見、ご感想、バグ報告、ツッコミなどは 談話室 へどうぞ。