cursormove.jsは、最初のエントリにカーソル移動するためのスクリプト。ただそれだけだと寂しいので、
- 最初のエントリで実行 → 最初のファイルへ
- 最初のファイルで実行 → 番最後のエントリへ
とカーソル位置を移動するようにしている。
たとえばこのようなフォルダ構成だったら、①→②→③→①…という動きをする。
汎用性があるかどうかというと多分微妙なのだろうが、僕の中では使用頻度が高い。フォルダ構成その他で思うように機能しないことが多々あり、そのたびに少しずつ修正をしてきたが、元々のスクリプトがこんがらがってたので一新。
以下をScriptフォルダに保存。
CursorMove2.js
//!*script
// 最初のエントリ位置取得
var fn;
for (var i = 0; i < 3; i++) {
if (PPx.Entry(i).Name != "." && (PPx.Entry(i).Name != "..") ) {
fn = i
break;
}
}
// 最初のファイル位置取得
var ff;
for (var i = fn; i < PPx.EntryAllCount; i++) {
if (PPx.GetFileInformation(PPx.Entry(i).Name) != ":DIR") {
ff = i;
break;
}
}
// エントリが一つ以下なら終了
if (PPx.EntryDisplayDirectories + PPx.EntryDisplayFiles <= 1) PPx.Quit();
// ファイルのみの場合
if (PPx.EntryDisplayDirectories == 0) { // 最初のエントリなら最後に
if (fn == PPx.EntryIndex){
PPx.EntryIndex = PPx.EntryAllCount - 1;
PPx.Quit();
} else { // それ以外なら最初に
PPx.EntryIndex = fn;
PPx.Quit();
}
}
// ディレクトリのみの場合
if (PPx.EntryDisplayFiles == 0) { // 最初のエントリなら最後に
if (fn == PPx.EntryIndex){
PPx.EntryIndex = PPx.EntryAllCount - 1;
PPx.Quit();
} else { // それ以外なら最初に
PPx.EntryIndex = fn;
PPx.Quit();
}
}
// ファイルとディレクトリがともにある場合
if (PPx.EntryIndex == fn){ // 最初のエントリなら最初のファイルに
PPx.EntryIndex = ff;
} else if (PPx.EntryIndex == PPx.EntryAllCount - 1) { // 最後のエントリなら最初のエントリに
PPx.EntryIndex = fn;
} else if (PPx.EntryIndex == ff) { // 最初のファイルなら最後のエントリに
PPx.EntryIndex = PPx.EntryAllCount - 1;
} else { // それ以外なら最初のエントリに
PPx.EntryIndex = fn;
}
以下を編集して取込。 Ctrl+Eに割り振る。
KC_main = { ; PPcメイン窓
^E ,*script %0\Script\CursorMove2.js
}

0 件のコメント:
コメントを投稿