「Windows環境でEmacsを常駐化して”送る”でテキストファイルを送って早く開く」
この記事のタイトルはNTEmacs スレッド 3のレス563の発言通りなのだが*1、この要望にこたえてみたい。それはレス570が言っているとおりのこと、つまり、Send Toで送るよう指定されたファイルをいわば Emacs.exe 上に擬似的にドラッグ&ドロップすることで実現する。挙動を厳密に説明すると、指定したEmacs.exeが起動していればその Emacs.exe にドラッグ&ドロップするが、もしも起動していなければ、起動させた上でファイルをドラッグ&ドロップする。
まずは設定作業の手順を示してから、解説をかいつまんで述べよう。設定作業は以下のとおりである。
- Index of /resources/app/ahk_scripts/DropFileのDropFile.exeを入手する
- Send To フォルダを開く(Winキー+R で「ファイル名を指定して実行」画面を呼び出し、shell:sendto と入力すればよい)
- Send To フォルダで「新規作成」の「ショートカット」を選択
- 「ショートカットの作成」の「どの項目のショートカットを作成しますか?」で、入手した DropFile.exe のパスを入力する
- 「ショートカットの名前」の「ショートカットの名前を付けてください。」で任意の文字列を入力する
- 作成したショートカットのプロパティを開き、「リンク先」に、Emacs という文字列と Emacs.exe の絶対パスを半角区切りで入力する
DropFile.exe と Emacs.exe を連携させてファイルを開くには、DropFile.exe の引数として
を順に渡すことになる。
Send Toに登録するショートカットのリンク先に関しては、この最後の「開くファイルのパス」以外を設定しておく。そうすれば、「送る」で選択されたファイルが「開くファイルのパス」として自動的に処理され、結果として当該ファイルを任意の Emacs.exe で開くこととなる。
ちなみに、ランチャーの類いでもこれにならって設定すれば同様の処理を実現できる。たとえばx-finderの右クリックメニューの項目に上記のSend To と同様のショートカットを設けるには次の画像の通り入力すればよい。
DropFile.exe の詳しい挙動については、 DropFile.exe と同じディレクトリにある DropFile.ahk という AutoHotkey 用スクリプトを見てほしい。そして、第一引数として渡す任意のアプリケーションのクラス名を調べるには、AutoHotkey に付属しているツール "AutoIt3 Window Spy"を用いること。
おまけとして、gvim用の設定も書いておこうか。DropFile.exe と gvim.exe を連携させてファイルを開くには、DropFile.exe の引数として
を順に渡すこととなる。
*1:Vimを常駐化してファイルの読み込みを爆速化する - Humanityに触発された発言らしい。