Everythingと連携
対応バージョン: PPx184以降プラグイン: tar80/ppm-etp
説明
EverythingとPPxの連携について下記二通りの方法を説明しています。
- Everythingの検索結果をPPcに渡す。
- Everything Search Moduleを使ってデータベースを操作する。
検索結果をPPcに渡す
Everythingから外部にパスを渡すコマンド枠が
5つ用意されているので、これに設定を割り当てれば、ENTERでフォーカスのあるPPcへ、SHIFT+ENTERで反対窓へ対象パスを送れます。
;Everything.ini
;@PPcのパスは書き換える
open_folder_command2=$exec(@\PPCW.EXE -r -k *jumppath "$pathpart(%1)" -entry:"$namepart(%1)")
open_file_command2=$exec(@\PPCW.EXE -r -k *jumppath "$pathpart(%1)" -entry:"$namepart(%1)")
open_path_command2=
explore_command2=$exec(@\PPCW.EXE -r -k *execute ~,*jumppath "$pathpart(%1)" -entry:"$namepart(%1)")
explore_path_command2=$exec(@\ppx\PPCW.EXE -r -k *execute ~,*jumppath "$pathpart(%1)" -entry:"$namepart(%1)")
file_open_keys=8205
file_explore_path_keys=9229
file_open_path_keys=
Everything Search Moduleを使う
まずモジュールの説明。
- ETSとETPの二種類用意されています。ここではETPを使用。
Everythingの対応バージョンは1.3となっていますが、1.4のeverythingでも使えています。
- 利用にはEverythingの起動とETPサーバの登録が必要。
次いで機能の説明。Everythingのデータベースを、
- 一行編集の補完候補として利用する。
- *whereコマンドの検索対象として利用する。
上述の通り、Everything Search Module(PPXETP.DLL)を使うにはEverythingをETPサーバとして起動しておく必要があり、
またデータベースの作成に管理者権限が求められます。普段ポータブル設定で使っていてサービス機能を登録していない場合は、管理者権限PPbの記事を参考にすれば
UAC認証のダイアログを回避できます。
ETPサーバは通常とは別インスタンス(別の設定とデータベース)なので、PPc専用として検索対象を絞り込んでおくと使い易くなります。
なお、Everything lite版はETPサーバ機能が除外されているため、通常版を利用します。
使い方
%K"@^F"
で一行編集と連携。everythingのデータベースを使用してのパス検索。
通常の一行編集では候補を表示しきれないので全画面で表示。
こんな感じ。
%K"@^W"
で*whereコマンドと連携。普通に*whereコマンドからモジュール検索を実行するとちょっと不便なので、%*input()の結果を *whereisする。別途用意したETOPTION.TXTを読み込めばEverythingのプレフィクス(file:など)を補完できる。
設定
PPx
A_exec = {
list = ;読み書きするリストをまとめておくディレクトリパス
}
_User = {
ETP_PORT = 【ポート番号】
ETP_USER = ; ユーザ名
ETP_PASS = ; パスワード
ETP_FULL = 10000 ; 詳細検索時の最大回答数(PPc の Where is)
ETP_PART = 1000 ; 簡易検索時の最大回答数(一行編集のパス補完)
}
;【】を編集。
KC_main = {
;ETPサーバの起動設定
FIRSTEVENT , *if !%*findwindowclass("EVERYTHING_(ETP)") %: 【管理者権PPb.vbs】-c "*run -d:【Everythingのインストールディレクトリ】 Everything.exe -minimized -admin -instance ETP -connect localhost:【ポート番号】 -drive-links"
;一行編集everything Search
^F , *string o,xflst=%*getcust(X_flst)
*linecust win_pos,K_edit:FIRSTEVENT,*setcust X_flst=%so"xflst" %%: *string o,id=%%*findwindowtitle("everything-ETP") %%: *windowposition %%so"id",【0】,【0】 %%: *windowsize %%so"id",【窓サイズ横幅】,【縦幅】 %%: *linecust win_pos,K_edit:FIRSTEVENT,
*setcust X_flst=%*regexp("%so"xflst"","s/(\d,\d,\d*),\d*/$1,【候補リスト行数】/")
*string o,path=%*input("" -title:"everything-ETP" -mode:e -k *completelist -set -module:on -detail:"user module" -file:"%%'list'%\ETOPTION.txt")
*jumppath %*regexp("%so'path'","/.*: //")
;*whereコマンド
^W , *whereis -text:"%*input("%FD " -title:"ETP Search" -mode:s -k *completelist -set -file:%'list'%\ETOPTION.TXT)" -type:5
;option付き
^W , *linecust DelEtSi,KC_main:ACTIVEEVENT, *string i,Edit_OptionCmd= %%: *string i,EtPf= %%: *linecust DelEtSi,KC_main:ACTIVEEVENT,
*string i,Edit_OptionCmd=*string i,EtPf=%%*input("%%si"EtPf"" -title:"Prefix" -mode:e -k *completelist -file:"%%'list'%\ETOPTION.TXT") %%: *setcaption ETP Search Prefix:%%si"EtPf"
*execute ,*whereis -text:"%%si"EtPf"%*input("%FD " -title:"ETP Search" -mode:Os)" -type:5 -listfile:"%'temp'%\ppxresult.xlf"
;Everythingの起動設定。
key , *if 0%*findwindowclass(EVERYTHING) %: *focus #%*findwindowclass(EVERYTHING) %: *stop
*run -d:【Everythingのインストールディレクトリ】 Everything.exe
}
Everything
; 必要そうな部分のみピックアップ
; ※上書き利用はできません
;Everything-ETP.ini
run_as_admin=1
window_title_format=$i Server
match_whole_word=0
match_path=0
match_case=0
match_diacritics=0
match_regex=0
etp_server_enabled=1
etp_server_bindings=127.0.0.1
exclude_folders="*\\.git","*\\.github","*\\node_modules","*\\deleted$"