読者です 読者をやめる 読者になる 読者になる

jEditのConsoleプラグインを便利に使う2

jEdit

以前、jEditのConsoleプラグインでディレクトリ移動するののついでに、バッファ/ファイルマネージャのパスでWindowsのエクスプローラを開く方法を紹介しました。

http://d.hatena.ne.jp/tanakahisateru/20081215/1229269568

最近、Consoleプラグインでは狭いなと思ったとき、すぐに別のシェルウィンドウを(もちろんConsoleと同じディレクトリで)開く方法が欲しくなってきたので、ちょっと試してみました。

jEditのコンソールで

start

とすると、新たなシェルウィンドウが開きます。Consoleでcmd.exeをいきなり動かすと、中にサブシェルが動いてしまうのでだめで、かならずstartコマンドを使います。

もしかすると、

start C:\Cygwin\bin\bash.exe -c "/bin/xhere /bin/bash.exe '%L'"

とするほうが好みな人もいるかも…。ちなみに私は、これをbashhere.batと名づけてパスの通ったディレクトリに保存しています。

ただし、このままだと、シェルウィンドウが開いている間、呼び出しもとのシェルが待機してしまうので、同時には使えません。一時的に大きな窓が欲しい場合専用です。

これをマクロとしてメニューに登録し、Consoleと関係ない方法で起動すると、ブロッキングされません。

shell_command  = "cmd /C start /D \"%TARGET_PATH%\"";
java.lang.Runtime.getRuntime().exec(
    shell_command.replace("%TARGET_PATH%", buffer.directory)
);
shell_command  = "cmd /C start /D \"%TARGET_PATH%\"";
browser = view.dockableWindowManager.getDockable("vfs.browser");
java.lang.Runtime.getRuntime().exec(
    shell_command.replace("%TARGET_PATH%", browser.directory)
);

エクスプローラ起動の時とほぼ同じです。/Dで明示的にカレントディレクトリを指定しないと、jEditのプロセス実行時のディレクトリになってしまうので注意。もちろん、shell_command変数の最後に、startの実行ファイルとして、Cygwinbashを指定してもいいでしょう。