It's All Text with Emacs導入記録

とりあえずIt's All Textをダウンロード・インストール。

おう、なかなか迷ったぜ。だが、解決した。
自分の環境Windows 7のEmacs23では簡単な既知のバグ的なものがあったらしい。

まずEmacs Clientというものを動かしておいて、それに関与させてファイルを開けば、一々新しいフレームを作らずに新規ファイル的なものを現在開いているEmacsに渡せるということを理解していた。

Emacs Wikiにそれなりのボリュームの文章があった。全部は読まなかったが一応少しは目を通して見た。
http://www.emacswiki.org/emacs/EmacsClient

>>EmacsClient allows one to open a file for editing in an already running Emacs. Because it doesn’t start a new Emacs instance at each invocation, you can setup EmacsClient as the default editor, e.g. in the environment variable EDITOR or VISUAL. EmacsClient is part of and works only in conjunction with GNU Emacs. The program GnuClient provides the corresponding functionality for XEmacs, but also works with GnuEmacs.

とのことである。ただ、Gnu Clientがどういうものなのかどちらが優れているのかというのはいまいちわからなかった。多少は調べてみたんだが。でもなんとくEmacs Clientを使えばいいんでしょ的なにおいを感じ取ってEmacs Clientを使うことに。というか、自分の環境、C:\Program Files (x86)\emacs\23.2\binではGnu Clientどこにあるの状態。WindowsEmacsを入れてる人はまずemacs.exeを起動してみてなんだこのコマンドプロンプトが出てくる謎の実行ファイルはと思って次回から現在に至りrunemacs.exeを使用しているに違いない。僕がそうだからだ。emacs.exeの詳細については未だにわかっていない自分。

emacsclient.exeとemacsclientw.exeというのはありますね。で、どちらを使えばいいのかまずわからない。ちなみに解決を終えた後にこれを書いているが、何故emacsclient.exeがあるのかこれも未だにわかってない。一応は簡単に調べたんだが。結果的に言うと後者のemacsclientw.exeのwがついている方を使った。ここでもwの方はアイコンがついててなんとなくそれっぽいというにおいがするんだが結局何もわかってないのでまぁそんなことはどうでもいい。ただ、解決策のみを記す。

まず、自分が実践したのは、ぐぐること。これ基本。最近基本を忘れがちだから困る。Firefoxアドオン It's All Text! と Emacs を一緒に使う - 檜山正幸のキマイラ飼育記を読むことと、the-sourceのメモ帳 it's all textを読むこと、EmacsWiki: Emacs Clientを少なからず読むこと。

で、読み終えた後に、(server-start)をC-x C-eで評価してみた。上記の僕の環境ではエラーが出ました。ちなみにエラーウインドウはqで消せる。
で、エラーが出ても問題ないだろと思いつつ進めてみることにしました。具体的にはIt's All Textの方から設定でエディタを色々指定してみて試して見た。んで、一通りrunemacs.exe, emacs.exe, emacsclient.exe, emacsclientw.exeと試してみて駄目だということがわかる。

んで、Emacs Wikiに書いてあったバッチファイル経由で起動する方法を試してみる。

Create an emacs.bat file in your Emacs “bin” directory. (Perhaps something like “\Program Files\emacs-23.1\bin” if you’ve used an installer.) Add the following commands:

@echo off
"%~dp0emacsclientw.exe" -na "%~dp0runemacs.exe" "%1"

ちなみに下記よりは上記の方が優れている様だ。
>>“\emacs-22.3\bin\emacsclientw.exe” --alternate-editor=”\emacs-22.3-bin-i386\emacs-22.3\bin\runemacs.exe” “%1”
とりあえずバッチファイルを作ったので、バッチファイルを実行して試してみたり、It's All Textからバッチファイルを指定して試してみたり。それなりには動いているようだが、やはりサーバーとして動いてないのが問題らしい。というわけでエラーの解決に向かう。

エラーの解決。
エラーメッセージでぐぐります。
>>The directory ~/.emacs.d/server is unsafe
Emacs - Error when calling (server-start) - Stack Overflowと、Stack Overflowのスレッド的なものが出てきます。機知のバグだったんですね。
一番上のbricad氏のAnswerを試してみようと思いますが、server.elに>>(eql (nth 2 attrs) (user-uid))というラインは見つかりませんでした。
次のgavecoa氏のAnswerをどう試せばいいのかまずわからなかったのですが、とりあえず.emacsおいらの場合はinit.elに記述して再起動してみたがエラーは引き続き出ました。user1603氏のAnswerも同様の反応。
其の次のRealitiyMonster氏のAnswerでHitしました。

I found this solution on EmacsWiki:

"The problem is the ownership of the directory ~/.emacs.d/server when you also have “Administrators” rights on your account. Create the directory ~/.emacs.d/server and set the owner of this directory to your login name and the problem is gone. As I have a “Dutch” version of Windows 7 I don’t know the English terms exactly but here’s the procedure:

Click R-mouse on ~/.emacs.d/server and select “Properties” (last item in menu). From Properties select the Tab “Security” and then select the button “Advanced”. Then select the Tab “Owner” and change the owner from “Administrators (\Administrators)” into “ (\”. Now the server code will accept this directory as secure because you are the owner.

Hope this helps for all you guys, it solved the problem for me anyway.

W.K.R. Reutefleut"

It definitely works on Vista, with Emacs 23.2.1.

というわけで、~/.emacs.d/serverのフォルダの権限を変更しました。いまいち本当にこれ変わったのか?とわからなかったですが、おkだったみたい。serverフォルダを右クリック→プロパティ→セキュリティタブ→詳細設定→所有者タブ→編集→所有者の変更で自分のユーザー名を選択状態にして選ぶ→OK→OKを押して開いていたプロパティのウインドウを閉じていく。こんな感じで変更が加わって大丈夫だったっぽいです。まぁ、いまいちなんとも変わってるのかこれ?と思いつつやってましたが、今確認のため開いてみたら一応所有者が変わってました。

で、その状態で(server-start)をC-x C-eで評価。今度はエラー出ませんでした。で、その状態でIt's All Textで.batファイルに渡すと性向しました。終わりです。文字うって保存してFirefoxのテキストエリアの方に変更が加わるか試してみてください。終わり。

(server-start)については.emacsに加えて起動時に実行する必要があるのかは不明。なんか加えなくても大丈夫な気がするのでとりあえず様子をみます。(server-force-delete)というコマンドがあることは発見したが、それを評価しない限りは別に再起動しても大丈夫じゃないかなぁ。サーバー(サーバーモードなのか?)が終了していない感じがする。

        • -

ていうか、It's All Textって文章をテキストフォームから引っ張ってこれるのは知ってたんだけど、どうやってその文章をEmacsで記述した後、Firefoxのもとのフォームに返すの?まさか手動でコピペなの?何かコマンドがあるのかなぁと思ってたりしてみたが、何気なくC-x C-sにて保存してみたら保存に合わせてフォームに記述内容が送られることが発覚。おぉーすげえ。はじまったな。
しかも、これ保存したらそのウインドウがアクティブにでもなるのかと思ったら全くそうではないらしい。凄く便利だ。
関係ないけど、この形式で書いた文章をおそらく全部RoamingのFirefox、It's All Text下に置いてて消してるのかまだ調べてないけどおそらく調べてないのでセキュリティ的にあれかもしれない。まぁそれがセキュリティ的に問題にならないようにFirefoxはランダムな文字列でProfiles下のディレクトリをくくってるみたいだけど。

それと、はてなでは?それとも自分の環境では?編集ボタンの位置を左上に変えたらボタンが押せて使えるようになった。とりあえず開いていたキーバインドにC-^として設定したのでボタンを使うかは不明だが。これで設定は終了した。