Google Chrome の textarea を Emacs で編集する
WEB ブラウザでなにかと textarea に文章を入力することがありますが、編集中に思わず C-n とか連打しちゃって、新しいウィンドウが大量に立ち上がる……なんてことが多々あります。<br/> Emacs でテキスト編集してブラウザにコピペ……。それでもいいかもしれませんが少し面倒です。<br/> そこで、Edit with Emacs を導入しました。
Edit with Emacs は、Google Chrome の Extension と、edit-server.el という Emacs Lisp の組み合わせで動作します。
インストール#
まず、Google Chrome の Extension をインストールします。
次に、edit-server.el を適当に配置します。<br/> edit-server.el は、Extension のオプションからDLできます。github からも取得できます。
配置したら load-path に追加し、.emacs 等に以下を追加します。
(require 'edit-server)
(edit-server-start)
新しくフレームを開きたくない場合は、
(setq edit-server-new-frame nil)
も書いときます。
これで準備は完了です。
使い方#
使い方は簡単。
まず、表示している WEB ページの textarea を右クリックし、コンテキストメニューから Edit with Emacs をクリックします。<br/> すると、Emacs で編集用のバッファが開きます。
ちなみに、Extension のオプションで、textarea の横に edit ボタンを表示したり、Alt + Enter で呼びだせるように設定できます。
textarea に入力済のテキストがあるときは、バッファにテキストが自動挿入されています。
これだけです。
なんか文字化けする#
自宅の Mac 環境だと特に問題はありませんでしたが、会社の Windows 環境だと Emacs で編集用バッファが表示されたときに、もともと入力されていた日本語が文字化けしていました。
原因としては、Extension との通信に使用しているネットワークプロセス の文字コードが指定されておらず、default-process-coding-system に設定されている文字コードが使用されていることです。
私は、default-process-coding-system には諸事情により cp932 を指定しています。<br/> 一方、Extension と Emacs 間の通信は HTTP を使用しており、テキストは UTF-8 でエンコードされているようです。
default-process-coding-system に utf-8 を指定すればいいのですが、それでは他の動作に影響を与えてしまうのでやりたくありません。<br/> なので、edit-server.el に1行加えることにしました。
(make-network-process
:name "edit-server"
:buffer edit-server-process-buffer-name
:family 'ipv4
:host (if edit-server-host
edit-server-host
'local)
:service edit-server-port
:log 'edit-server-accept
:coding '(utf-8-dos . utf-8-dos) ;; この1行を追加する
:server t
:noquery t)
edit-server-start 関数でネットワークプロセスを生成している箇所があるので、文字コードの指定をしてやります。
これで文字化けすることなく表示することができました。