2018年11月7日水曜日

PPxをランチャとして使う⑦ステップイン・アウト


一行編集内で、ディレクトリパスのサブフォルダに潜ったり、親フォルダに戻ったりできるようにする。
サブフォルダに潜る例。


親フォルダに戻る例。


準備


以下をScriptフォルダに保存。

subdirlist.js

//!*script

// 受け取ったディレクトリのサブディレクトリパスやファイルパスを、ファイルに出力
// 第一引数 : ディレクトリ
// 第二引数 : 出力するファイルパス

// 引数がなければ終了
if (PPx.Arguments.Length < 2){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var pdir = PPx.Arguments(0);
var resultfile = PPx.Arguments(1);
var fso = PPx.CreateObject("Scripting.FileSystemObject");
var dir = fso.GetFolder(pdir);
var folders = new Enumerator(dir.SubFolders);
var files = new Enumerator(dir.Files);
var message = pdir + "\r\n"; // 自パスを追加
for(; !folders.atEnd(); folders.moveNext()){ // サブフォルダを追加
  message += fso.BuildPath(pdir, folders.item().Name) + "\r\n";
}
for(; !files.atEnd(); files.moveNext()){ // ファイルを追加
  var fname = files.item().Name;
  if (fso.GetExtensionName(fname)=="exe"){ // 拡張子がEXEのファイルのみ追加
    message += fso.BuildPath(pdir, fname) + "\r\n";
  }
}

fso.CreateTextFile(resultfile);
// 書き込み
objOutFile = fso.OpenTextFile(resultfile, 2);
objOutFile.Write(message);
objOutFile.Close();

このスクリプトは、引数を2つ与えて使う。

subdirlist.js,ディレクトリパス,テキストファイルパス

とすると、ディレクトリパス、サブフォルダパス、EXEファイルパスをファイルに出力する。こうしてできたテキストファイルを、補完候補リストとして登録すれば、ステップイン・アウトができることになる。

以下を編集して取込。

K_edit = { ; 一行編集/PPe兼用
^\RIGHT ,%Os *string o,dir=%*edittext %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^\LEFT ,%Os *string o,dir=%*name(D,"%*edittext") %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace "" %:
}

操作


  • Ctrl+Shift+←で親フォルダに移動
  • Ctrl+Shift+→でサブフォルダを表示

これまでの設定まとめ


  • PPtrayを起動
  • isThidFolder.jsとisThisFIle.jsをScriptフォルダに作成
  • subdirlist.jsをScriptフォルダに作成
  • ファイルパスをまとめたl_cmd.txtをPPxフォルダに作成
  • フォルダパスをまとめたl_dir.txtをPPxフォルダに作成

X_flst = 3,2 ; エントリ補完結果一覧 0:無 1:有 2:OS版 3~5:動的,0:先頭 1:部分

A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto.png
}

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
 *string o,name=%"PPlauncher"%eh%E %:
 *if %*script(%0\Script\isThisFolder.js,%so"name") %: *ppc -r %so"name" %: *stop
 *if %*script(%0\Script\isThisFile.js,%so"name") %: *execute,"%so"name"" %: *stop
 *execute,%so"name"
}

K_edit = { ; 一行編集/PPe兼用
^\RIGHT ,%Os *string o,dir=%*edittext %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^\LEFT ,%Os *string o,dir=%*name(D,"%*edittext") %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^W ,*execute ,%Ob browser  "http://google.jp/search?q=%*edittext&ie=utf-8&oe=utf-8" %: %k"&F4"
F12 ,*ppcust %: %k"&F4"
ESC ,%k"&F4"
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt %: *completelist /set /file:%0l_dir.txt
}

0 件のコメント:

コメントを投稿