Help us understand the problem. What is going on with this article?

[Windows]gnupackのemacsclientw.exeを快適に使えるようにする。

More than 5 years have passed since last update.

だいぶ昔、Emacsを導入した頃の奮闘記です。かなり初心者視点ですが、大事なことだったでメモ。

-
初めてWindowsにEmacsを導入したとき、ファイルを開くたびに新しいEmacsが起動してるのを見て、バッファで開きたいんだけど???? となり。
それからすぐにemacsclientw.exeの存在を知ったので、早速使おうとしたら、

・Emacs Serverが起動していないとエラーになる。
・ファイルの引数がないとエラーになる。

というちょっとりかいできない挙動を示し、
このままではメモ帳のような自然な動きのショートカットを作れない!となり、何とかしようと奮闘してみました。

しばらくぐぐって見つけたのがこの記事、
[emacs.exe と emacsclient.exe を自動的に使い分ける AutoHotkey のスクリプトを作成した (gnupack 向け)]
というまさにどんぴしゃな解決法を見つけたのでした。

が、残念なことにどうにもうまく動かなかった……ので、
同じくAHKを使って自分で作ってみました。
こういう事例にはAHKを使えばいいんだね!すごい!おぼえた!

というわけでコードはこちら。

[gist] https://gist.github.com/4705394

ほとんど1から書いてますが、やりたいことは上の記事のものと同じです。

・起動してなかったら起動する
・起動してて引数があったらクライアントをつかう
・起動してて引数がなかったらEmacsをアクティブ化

を行なってます。

参考元と違うのは、

  • 引数を1つしか受け入れない挙動を変えた(複数ファイルをドロップすると全部読みこんでくれる)
  • Emacsが起動しない問題を解決(Emacsが未起動の状態では存在しないはずのserverファイルに対してFileExistやってた)
  • ファイルパスにスペースが入ってると正常に動かない問題を解決(※自分の環境では致命的)

みっちりコメントが書いてあるのは、AHKスクリプトが初めてで記法がまるでわかめだったのでコードを覚えるのを諦めた結果です。もうかきたくない。えりすぷ最高。
AHK的な書き方っていうのをガン無視してる感あるけど気にしない方向で。

これをコンパイルしてショートカットや関連付けに使うことで、ふつうのWindowsアプリケーションのように地味インタラクティブな挙動でEmacsを起動することができます。やったね!
……そもそもEmacsを終了させないっていう意見もあるらしい。

動作させるには、
[AutoHotKey_L] http://l.autohotkey.net/ から、
[Compiler - Ahk2Exe] が必要です。
64bitなコンパイルもできるよ。うれしい。

使う前にiniファイルを用意して各ファイルのパスを書きます。

StartEmacs.ini
[path]
emacs=
emacsclientw=
server=

gnupackを使ってるときは、emacsにはgnupackインストールディレクトリにあるemacs.exeを指定すること。
不要だと思ったのでiniのパスチェック処理は除外してエラーハンドラに任せてます。
パス間違いには注意。

-
以上です。
Windowsに慣れてたらこの挙動に結構戸惑ったけれど、Linux寄りの人だとそうでもないのかな?
WindowsでEmacsデビューの敷居が少しでも低くなってくれればいいなとおもいました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした