emacsでHTMLを編集するモードを比較してみた。
もう5年以上使っているにも関わらず全然使い方を知らなかったりするemacsですが、ようやくきちんと勉強しようと言う気になったので調べてみました。
いままでも、HTMLとかCSSを書くときにもっとemacs使おうと思いつつ、テキストエディタのHTML編集モードやDreamWeaverといった分かりやすいエディタにフラフラ逃げていた訳ですが、今年はモヒカン度合いを高めようと思い、積極的に使って行こうと思います。
なぜviでないかというのはおいておいて。
使っているelispを晒してみる
とはいっても全然emacs使いこなしていないので、たいしたモノは出てきません。
howm
書き散らしメモツール。検索のインターフェースが好きなので、予定やTodoは使わずにテキストを書くツールとして使っている。
仕事で資料を書くときなども下書きはまずここで書き、ある程度数がたまったらCLIEのメモ帳に移して、暇なときに見直したり他の資料の土台にしたりしている。
iimage
キーバインドでインライン画像の表示を切り替えられるマイナーモード。
elscreen
emacsをMDIのように使えるlisp。これがないと作業できません。
mapae
emacs発perl経由でblogにエントリーを投稿できるlisp。これがなかったら長文のエントリーは書いていなかったと思う。
他はcarbon emacs パッケージに含まれているので、自分でインストールしているのはこれだけ。あとはgrepをlgrepに変更しているくらい。
「emacsはテキストエディタではなく環境である」とはよく言ったものだよなぁ。
emacs で diff を使う
某サイトのメンテナンスで同じページに違う部署から複数の修正が入り、それぞれ公開時期が異なるという楽しい事態があった。
で、確認→公開を繰り返すうちに古い情報で上書きしてしまう可能性があったので、確認のために公開されているHTMLとテスト環境のHTMLの diff をとってみようと考えた。
コマンドラインから使うのが一番柔軟性があっていいのだが、折角なので emacs 上で完結しないかな、と都合のいい事を考えていたら、ediff という lisp がある事を知った。

これはdiffの結果を2ペイン+1サブウィンドウで表示できるもの。とはいっても、とりあえず表示させただけで全然使っていないんだけど。
Emacs 電子書棚では、Meadow しか使えない、と書かれていたが、carbon emacs でも動いた。多分他のemacsでも動くだろう。
以下、参考情報
- Meadow/Emacs memo: 変更箇所を表示・管理・メモ: 変更箇所を表示する ― ediff
- ediffを使ってファイルをマージ - Ediff
psgml-mode
html-helper-modeが動いてくれないので代替手段として使ってみる。
configure の以下の箇所を書き換え
prefix=/Applications/Emacs.app/Contents/Resources
bindir=/Applications/Emacs.app/Contents/MacOS/bin
Carbon Emacs パッケージ2004/10をインストール
http://home.att.ne.jp/alpha/z123/emacs-mac-j.html

Windows でいうところの Meadow といったところか。ソースからコンパイルする必要がないので非常に手軽で便利である。
ただ、今まで lisp てんこもりで emacs を使っていたので、いくつか自分で追加してみる。
elscreen(1.2.4)
http://www.morishima.net/~naoto/j/software/elscreen/
LIMIT(1.14.7)
ftp://ftp.fan.gr.jp/pub/elisp/limit/
make
sudo make install LISPDIR=/Applications/Emacs.app/Contents/Resources/share/emacs/21.3.50/site-lisp
辞書関連
EBライブラリ(4.0)
http://www.sra.co.jp/people/m-kasahr/eb/index.html
./configure --prefix=/Applications/Emacs.app/Contents/Resources --with-iconv-includes=/usr/include --with-iconv-libraries=/usr/lib
make
sudo make install
eblook(1.6)
http://openlab.ring.gr.jp/edict/eblook/
./configure --prefix=/Applications/Emacs.app/Contents/Resources --bindir=/Applications/Emacs.app/Contents/MacOS/bin
make
make install
lookup(1.4)
http://openlab.jp/edict/lookup/
install.elを使用
lookupのソースの入っているディレクトリをdiredで開く
install.elの上でL
iimage(1.0)
http://www.netlaputa.ne.jp/~kose/Emacs/iimage.html
/Applications/Emacs.app/Contents/Resources/share/emacs/21.3.50/site-lisp にiimage.elをコピー
追記(05/04/13 16:50)
limitのインストールがちょっと変わった。
make EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs PREFIX=/Applications/Emacs.app/Contents/Resources LISPDIR=/Applications/Emacs.app/Contents/Resources/site-lisp
sudo make install EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs PREFIX=/Applications/Emacs.app/Contents/Resources LISPDIR=/Applications/Emacs.app/Contents/Resources/site-lisp
行番号をつける
http://cwaweb.bai.ne.jp/~daisaku/meadow.html
Emacs Lisp List からたどってsetnu.elを入手し、site-lispなどパスの通ったところに置きます。
.emacsに次の設定を加えます。(autoload 'setnu-mode "setnu" nil t)
M-x setnu-mode で行番号表示あり・なしを切り換えることができます。
ただし、このsetnu-modeにすると後述する「キーワードに色をつける」機能が働かなくなります。(私の設定がまずいだけかもしれませんが...)
使ってみたものの、行の折り返しがかかるとヒジョーに気持ち悪い表示になってしまいました。
IME の ON/OFF でカーソルの色を変える
http://kawacho.don.am/win/meadow/customize/
emacs じゃなくて Meadow の設定ですね。
SKKと同じ事をIMEでもやってみようという事で。IMEの状態を知るのにいちいちタスクバーに視点を動かしていたら集中力が切れますよね?
; (cursor-type が box, bar の場合)
(add-hook 'mw32-ime-on-hook
(lambda () (set-cursor-color "brown"))) ; ON
(add-hook 'mw32-ime-off-hook
(lambda () (set-cursor-color "black"))) ; OFF
winshotを使ってみる
http://www.woodybells.com/winshot.html
テキストばかりだと味けないので。
ついでにMeadowに高林さんの所で紹介されていた関数を入れてインラインで画像を表示できるようにしてみました。
横着プログラミング 第1回: Unixのメモ技術
http://namazu.org/~satoru/unimag/1/
iimage
http://www.netlaputa.ne.jp/~kose/Emacs/iimage.html
画像をインラインで表示できるマイナーモードのLisp。
でもMeadowだとchangelogモード内で正常に動かないなぁ。
howmのデータをマージしてみた。
今年の2月から6月くらいまでhowmを使って買いたメモをマージしてみました。
- howmで一覧表示 (c-,, → a)
- 連結表示 (@)
- 連結表示をテキストファイルとして保存 (c-x w → howm.txt)
- 1日1ファイルで記録していたファイル名の表記をChangeLogの形式に合わせる
- 各項目の日付を正規表現で一括削除
- 各項目行頭の = を * に置換
- カテゴリー、 : を付加