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

blechmusikの日記

キー・カスタマイズ・ソフトウェア "DvorakJ" の覚え書きをはじめとして様々なことを書いています。

「Windows環境でEmacsを常駐化して”送る”でテキストファイルを送って早く開く」

 この記事のタイトルはNTEmacs スレッド 3のレス563の発言通りなのだが*1、この要望にこたえてみたい。それはレス570が言っているとおりのこと、つまり、Send Toで送るよう指定されたファイルをいわば Emacs.exe 上に擬似的にドラッグ&ドロップすることで実現する。挙動を厳密に説明すると、指定したEmacs.exeが起動していればその Emacs.exe にドラッグ&ドロップするが、もしも起動していなければ、起動させた上でファイルをドラッグ&ドロップする。


 まずは設定作業の手順を示してから、解説をかいつまんで述べよう。設定作業は以下のとおりである。

  1. Index of /resources/app/ahk_scripts/DropFileのDropFile.exeを入手する
  2. Send To フォルダを開く(Winキー+R で「ファイル名を指定して実行」画面を呼び出し、shell:sendto と入力すればよい)
  3. Send To フォルダで「新規作成」の「ショートカット」を選択
  4. 「ショートカットの作成」の「どの項目のショートカットを作成しますか?」で、入手した DropFile.exe のパスを入力する
  5. 「ショートカットの名前」の「ショートカットの名前を付けてください。」で任意の文字列を入力する
  6. 作成したショートカットのプロパティを開き、「リンク先」に、Emacs という文字列と Emacs.exe の絶対パスを半角区切りで入力する

f:id:blechmusik2:20130504003056p:plain


 DropFile.exe と Emacs.exe を連携させてファイルを開くには、DropFile.exe の引数として

  • 1. "Emacs"という文字列(大文字小文字を区別するので注意すること)
  • 2.emacs.exeの絶対パス
  • 3.開くファイルのパス

を順に渡すことになる。
 Send Toに登録するショートカットのリンク先に関しては、この最後の「開くファイルのパス」以外を設定しておく。そうすれば、「送る」で選択されたファイルが「開くファイルのパス」として自動的に処理され、結果として当該ファイルを任意の Emacs.exe で開くこととなる。
 ちなみに、ランチャーの類いでもこれにならって設定すれば同様の処理を実現できる。たとえばx-finderの右クリックメニューの項目に上記のSend To と同様のショートカットを設けるには次の画像の通り入力すればよい。
f:id:blechmusik2:20130504003601p:plain
 DropFile.exe の詳しい挙動については、 DropFile.exe と同じディレクトリにある DropFile.ahk という AutoHotkey 用スクリプトを見てほしい。そして、第一引数として渡す任意のアプリケーションのクラス名を調べるには、AutoHotkey に付属しているツール "AutoIt3 Window Spy"を用いること。

参考ページ
EmacsWiki: Emacs As Daemon

おまけとして、gvim用の設定も書いておこうか。DropFile.exe と gvim.exe を連携させてファイルを開くには、DropFile.exe の引数として

  • 1. "Vim"という文字列(やはり大文字小文字を区別するので注意すること)
  • 2.gvim.exeの絶対パス
  • 3.開くファイルのパス

を順に渡すこととなる。
f:id:blechmusik2:20130504005857p:plain