PPxでは指定ハイライトが1~7まで用意されている。
カレントディレクトリに指定ハイライトがある場合、それを順次マークできるようにする。
以下のスクリプトを保存。これは、引数に1~7の数値を取り、その数値以上かつ最も近い数値の指定ハイライトをマークするスクリプト。また、マークした指定ハイライトの数値+1を戻り値として返す。
highlightmark.js
//!*script
// 第一引数 : 1~7の数値
// 戻り値 : マークした指定ハイライトの数値+1(数値が7のときは1)
//
// 第一引数の数値以上かつ最も近い数値の指定ハイライトをマークする
if (PPx.Arguments.Length < 1){
PPx.SetPopLineMessage("引数が正しくありません。");
PPx.Quit();
}
var arg = parseInt(PPx.Arguments.Item(0));
var hl_1st_num = 0;
var hl_last_num = 0;
if (arg > 7 || arg <1 ) PPx.Quit();
// 指定ハイライトnの値を取得
// 最小値をhl_1st_numへ、引数の数値以上かつ最も近い値をhl_last_numへ
// hl_last_numが存在する場合、エントリマークを実行
for (var i = 1; i < 8; i++) {
for (var j = 0; j < PPx.EntryAllCount; j++) {
if(PPx.Entry(j).Highlight == i){
if (!hl_1st_num) {
hl_1st_num = i;
}
if (arg > i) continue;
hl_last_num = i;
PPx.Entry(j).Mark = 1;
}
}
if (hl_last_num) break;
}
// hl_last_numが存在しない場合のエントリーマーク実行
if (hl_1st_num && !hl_last_num) {
for (var i = 0; i < PPx.EntryAllCount; i++) {
if(PPx.Entry(i).Highlight == hl_1st_num){
PPx.Entry(i).Mark = 1;
}
}
}
// 返り値の処理
if (hl_last_num == 7) {
PPx.Result = 1;
} else if (!hl_1st_num && !hl_last_num) {
PPx.Result = 1;
} else if (hl_last_num) {
PPx.Result = hl_last_num+1;
} else if (hl_1st_num) {
PPx.Result = hl_1st_num+1;
}
以下のコマンドを適当なキーに登録する。
*ifmatch 0,0%si"hl" %: *string i,hl = 1 *unmarkentry *string i,hl=%*script(%0\Script\highlightmark.js,%si"hl")
0 件のコメント:
コメントを投稿