秀丸エディタでファイルマネージャ枠を自動で同期する
秀丸エディタのファイルマネージャ枠(エクスプローラ枠)は便利だが、表示内容が自動で同期されないのが不便だった。自動で同期する方法を見つけたのでまとめる。
方法
- [マクロ] > [マクロ登録] > [自動起動] > [自動起動マクロを有効にする]
- [アクティブ切り替え後] を有効にして、以下マクロを指定
loaddll "HmExplorerPane.dll"; #get_1_if_pain_opened = dllfunc("GetMode",hidemaruhandle(0)); if(#get_1_if_pain_opened!=1){ endmacro; } #h = dllfunc("GetWindowHandle", hidemaruhandle(0) ); // 252 同期 #ret = sendmessage(#h, 0x111, 252, 0);
解説
自動同期は以下の二段階で実現する。
- (1) ファイルマネージャ枠の同期処理を行うマクロをつくる
- (2) 秀丸エディタに「タブが切り替わる度に指定マクロを実行する」的な仕組みがあるので、ここに 1 を指定する
マクロ解説
loaddll "HmExplorerPane.dll";
これはファイルマネージャ枠を使う際の決まり文句。
#get_1_if_pain_opened = dllfunc("GetMode",hidemaruhandle(0)); if(#get_1_if_pain_opened!=1){ endmacro; }
これはファイルマネージャ枠が表示されているかどうかを調べ、されていないならその場で終了する処理。
このような判定を行っておくと、ファイルマネージャ枠を使っていない時に同期処理が走らず無駄がない。
#h = dllfunc("GetWindowHandle", hidemaruhandle(0) ); // 252 同期 #ret = sendmessage(#h, 0x111, 252, 0);
これはファイルマネージャ枠の同期処理を行う。DLL に実装された機能を呼び出す、という使い方になるので表記が多少煩雑。値 252 の部分など、詳細はマクロヘルプを調べたら載ってある。
使い心地
秀丸エディタにこもっている間は使いやすい。自動で同期されるから。
別のウィンドウと切り替えながらだと使いづらいかも。秀丸エディタをアクティブにする度に自動同期が走るので、ファイルマネージャ枠中で別フォルダを開いていた場合も(自動同期されてしまい)カレントディレクトリに戻されてしまう。