説明

PPc一行編集でのパス補完サポート。

  • fenrirscan.exeで生成したパスリストを使ったインデックス検索。

    • fenrirscan.exeはppc.exeのあるディレクトリに置いてください。
    • パスリストにはPPXUPATH.TXTを使用。fenrirscan.exeで生成後、PPXFPATH.TXTの内容が追記されます。
  • キー操作でパスを昇降可能。

    上方への補完はPPxをランチャとして使う⑦ステップイン・アウトを参考にさせて頂きました。

  • コマンドランチャのように入力途中でENTERしても補完。

    ヒストリに履歴を残さないように%*input(… ‘-mode:e -k *completelist -module:off -history:d’)としています。

  • スペースを含むパスにある程度対応。
  • コマンドを含む文字列にある程度対応。
  • マクロ文字(%0など)、auxパスに対応。
  • TAB補完を有効にするにはX_ltabの第一項目を1にする、もしくは*editmode -tabkey:onを設定してください。

    一行編集上にalt+移動候補キーが存在しない場合、X_ltabの値に関わらず TAB補完が有効になるようです。普段はmigemo不使用(0,2)、一時的にmigemo使用(1,4-6)するような場合に 以下のコマンドが利用できます。

     *linecust ltab,K_lied:FIRSTEVENT,*setcust X_ltab=%*getcust(X_ltab) %%: *linecust ltab,K_lied:FIRSTEVENT,
     *setcust X_ltab=1,4
    
  • コマンド内でsetSel.jscompCode.jsresult.jsを使っています。
  • X_fdir=1, X_flst≧3 ,X_ltab≧1 で使うことを想定。
  • コードをダウンロードして使う場合、fenrirscan.iniは文字コードを変換する必要があります。

使いかた

補完の邪魔になることが多いので標準でEverything Search Moduleは不使用。 CTRL+@キーで使用をトグルできる。


sample

キーバインド

PPc

KEY COMMAND
@ 一行編集(パス移動用)
SHIFT+@ 一行編集(反対窓を非アクティブで開く)


一行編集

KEY COMMAND
F12 パスリストの更新(fenrirscan)
CTRL+H 編集中のディレクトリパスを一つ上のパスにする
CTRL+L 編集中のディレクトリパスを下層へ補完する
CTRL+N 次の候補
CTRL+P 前の候補
CTRL+S 編集中のパスをScanRule.iniに追加
CTRL+@ -module:on/offのトグル
ENTER パス入力途中でENTERした時に補完候補一行目を実行

設定

;エイリアス
A_exec = {
scr = ;スクリプト親ディレクトリパス
}

;通常時のTAB補完設定 0,2、又は0,4-6に設定しておくと使いやすいと思います
X_ltab = 0,2

;PPcキーバインド
KC_main = {
'@'    , *string o,path=%*input("%*name(DN,"%FDVN")" -title:"Jumppath.." -mode:e -k *editmode -allkey %%: *completelist -set -history:d %%: *mapkey use,K_liedMAP)
         *jumppath %*name(DB,,%sgo'path')
\V_HC0 , *string o,path=%*input("%*name(DN,"%FDVN")" -title:"Jumppath..OP" -mode:e -k *editmode -allkey %%: *completelist -set -history:d %%: *mapkey use,K_liedMap)
         *if 2 > %*js(PPx.Result=PPx.Pane.count;) %: *ppc -noactive -bootid:~ %sgo"path" %: *stop
         *execute ~,*jumppath %*name(DB,,%sgo'path')
}
;一行編集キーバインド
K_lied = {
^H , *string o,complist=%'temp'%\comp.txt
     *replace %*script(%'scr'%\compPath.js,%so"complist")
     %K"@END"
^L , *if 0%*editprop(list) %: *completelist -close
     *ifmatch "o:e,a:d+","%*regexp("%*script(%'scr'%\compCode.js,"e","""")","s/.*[\s,](.*)/$1/")" %: *replace "%*edittext%\"
     %K"@END@TAB"
;    *script %'scr'%\setSel.js,"(.*\\(?!$))(.*)"
;     末尾選択状態にするなら↑コメントを外す
}

K_liedMAP = {
ENTER  , *string o,path=%*extract("%*edittext")
         *ifmatch /^aux:.*/,%so"path" %: %K"@ENTER" %: *stop
         *if 10==%*editprop(list)%*result(exists,%so"path") %: %K"@DOWN @ENTER" %: *stop
         %K"@ENTER"
F12    , %Oq *run -noactive -d:%0 fenrirScan.exe %& %Obd type %0%\PPXFPATH.TXT >> %0%\PPXUPATH.TXT %& *completelist /reload
^S     , *linemessage [Add] %*edittext %: %Obd echo +%*edittext>> %0%\ScanRule.ini
^V_HC0 , *if 0%se"module" %: *completelist -module:off %: *linemessage %: *string e,module= %: *stop
         *completelist -module:on %: *linemessage module:on
         *string e,module=1
}