Varren2
Version 2.01 2011/10/12
[古いマクロ] このマクロの機能は Varren3 へ移行しました。今では作者自身もこのマクロを使っていません。(2013/04/07)
- ソースコード上の変数名や関数名などを一括置換します。
- たぶん秀丸マクロ初、ミラーリング・プレースホルダ編集機能を搭載。すべての出現個所がリアルタイムに書き換わります。カーソルから視線を外すことなく直観的に編集できます。
- プログラミング言語に応じて変数のスコープを自動検出できます。検出ロジックはプラグイン方式になっていて、簡単なマクロを書くことで任意の言語に対応できます。
- 変数名が衝突すると警告が出ます。
- 秀丸エディタ ver 8.00 以降をお使いですね?
- マクロフォルダの位置を確認します。マクロフォルダは秀丸の [その他]-[動作環境]-[パス]-[環境]-[マクロファイル用のフォルダ] で指定されているフォルダです。無指定なら Hidemaru.exe と同じフォルダです。
- ダウンロードしたアーカイブをマクロフォルダに解凍します。
- [マクロ]-[マクロ登録] で Varren2.mac を適当な番号に登録します。
- [その他]-[キー割り当て] で適当なキーに割り当てます。
インストール後のファイル構成は次のようになります。
■マクロフォルダ\
│・Varren2.mac … 起動マクロ
└■Varren2\
│・Varren2-Main.mac … 本体マクロ
│・Varren2-Dialog.mac … 本体マクロ (ダイアログ版)
│・detect.mac.mac … 検出マクロ (サンプル: 秀丸マクロ用)
│・readme.html … このドキュメント
└■system\
・placeholder2.mac … プレースホルダ編集マクロ
- インストール時と同じ方法でキー割り当てを解除します。
- 同様にマクロ登録も解除します。
- Varren2.mac と Varren2 フォルダを削除します。レジストリは使っていません。
- 置換したい変数名の上にカーソルを置いて Varren2.mac を実行します。
- 大文字小文字は区別されます。
- 範囲選択時は選択範囲が単語として置換されます。
- BOX 選択には対応していません (論理行単位で処理されます)。
- 着色されたプレースホルダ上で編集を行います。
- プレースホルダ編集中は次の操作のみが有効です:
- 文字入力 (直接入力のみ)
- [BS]: バックスペース
- [Enter]: 確定
- [Esc]: キャンセル
- [←][→][↑][↓]: カーソル移動
- Shift+[←][→][↑][↓]: 範囲選択
- Ctrl+[ X ]: カット
- Ctrl+[ C ]: コピー
- Ctrl+[ V ]: ペースト
- これら以外の操作は一切できません。例: [Delete]、[PageUp]、日本語入力、マウス操作など。
- [Enter] を押すか、プレースホルダ外の場所で文字入力すると確定します。[Esc] を押すと実行前の状態に戻ります。
置換される変数名とスコープ (置換対象範囲) は、デフォルトでは次のルールで決定されます。
- 変数名:
- 無選択時: カーソル位置を含み、正規表現
[@#$]*[_a-zA-Z0-9]+
にマッチする文字列。
- 範囲選択時: その選択範囲の文字列。
- スコープ:
- 強調行の範囲選択で選択される範囲。
- それで何も選択されなかった場合は、ファイル全体。
ファイルタイプ別の検出マクロを書くことで、この動作をカスタマイズすることができます。サンプルとして秀丸マクロのソースコード用の検出マクロが同梱されています:
detect.mac.mac
// 変数名を取得
if (!selecting) {
call SearchHere "(|##?|\\$\\$?)[_a-zA-Z0-9]+";
}
$name = gettext(seltopx, seltopy, selendx, selendy, true);
if ($name != "") {
// スコープを範囲選択
if (leftstr($name, 2) == "##" || leftstr($name, 2) == "$$") {
selectcfunc; // 強調行の範囲選択
} else {
selectall; // すべて選択
}
}
// 変数名を返す
endmacro $name;
// (以下サブルーチン略)
- この例では、まず、正規表現
(|##?|\\$\\$?)[_a-zA-Z0-9]+
にマッチする文字列を変数名として取得します。次に、変数名の左側 2 文字が ##
または $$
であればローカル変数と見なし、スコープとして強調行の範囲を選択します。そうでなければグローバル変数と見なし、スコープとしてファイル全体を選択します。最後に、endmacro
の引数として変数名を返します。
任意のプログラミング言語に対応させるには、この例にならって検出マクロを作ってください。
- ファイル名は detect.(拡張子).mac とし、Varren2-Main.mac と同じフォルダに置いてください。
- ユーザーが Varren2.mac を起動したときのカーソル位置/選択範囲が維持された状態で検出マクロが起動されます。
- 検出マクロは次の 2 つの仕事をしてください。
- 置換対象の変数名を取得し、endmacro の引数として本体に返すこと。
- スコープを範囲選択すること。
- 変数名を取得できなかった場合は空文字列を返してください。この場合はスコープを範囲選択しないでください。
- スコープは論理行単位となります。
- 検出マクロ内でメッセージ等を出す場合は、その前後で enabledraw; disabledraw; してください。
- プレースホルダの表示色
- Varren2\system\placeholder2.mac の冒頭をいじるとカスタマイズできます。
// 文字色
#FontColor = 0x000000;
// 背景色 (Varren2 で使うのは先頭の 1 色だけ)
// ↑明 橙 赤 青 緑 青紫 茶 桜 水 草 赤紫 黄 灰
// $ColorPalette = "FDE5CC F2CDD1 C4E1F2 D9EAD5 DFD7E7 F2EADD F5DEDD DBE8ED DDECD0 EEDDEF F0ECD8 EAEAEA ";
// $ColorPalette = "FBCB9A E59CA4 89C3E5 B3D5AB BFAFCF E6D5BC EBBDBB B8D1DB BCDAA2 DDBBDF E2D9B1 CBCBCB ";
$ColorPalette = "F9B268 D86B77 4EA5D8 8DC182 9F87B7 D9C19B E19D99 95BAC9 9BC874 CC9ACF D4C68B 989898 ";
// $ColorPalette = "B45F06 9F2936 1B587C 4E8542 604878 997339 CD5C56 538BA2 5B8835 AB57AF B49F42 464646 ";
// ↓暗
動作環境
- 秀丸エディタ v8.00 以降で動作するはずです。
- 秀丸エディタ v8.11 で動作確認しました。
ライセンス
- このマクロはフリーウェアです。自由に利用、改変、再配布することができます。
- 改変したものを公に再配布するときは次のことを明記してください。
- 改変したものである旨 (できれば改変内容も)
- 改変元の名称、バージョン、一次配布場所
配布場所
一次配布場所は Wisteria - 秀丸マクロ - Varren2 です。二次配布は次のところで行われています。
- Version 2.01 (2011/10/12)
- アウトラインがないときカーソル位置の 1 個しか置換されないバグ修正
- デフォルトのスコープを折りたたみ可能行の範囲ではなく強調行の範囲とする
- コメント内と文字定数内を置換対象から除外
- Version 2.0 (2011/10/01)
もはや全然別物だがね!
- Varren 変数名変更 Version 1.04 (2008/12/27)
- Varlook 変数名強調 Version 1.04 (2008/12/27)
検出マクロの提供、バグ報告、提案、ツッコミなどは 談話室 へどうぞ。