(2006年1月追記: この章の内容は §8.3 を除き 2004 年に書いたものですが, 基本的に Meadow 1.15 からのやや無理のある流用であり, 本文に述べているように文字の等幅性などに問題を抱えています。 新しく Meadow 2.10 について書いた §16の内容は Meadow 2.00 にも応用できますから, Meadow 2.10 に移行しようとする人はもちろん, あえて古い Meaodw 2.00 にとどまろうという人も 是非 §16 を参考にしてください)
Windows 上の Emacs 実装のひとつ Meadow 1.15 を前々回紹介しました。 Meadow 1.15 は Unix 上の GNU Emacs 20.7 を Windows に移植したものです。
この夏,より新しい GNU Emacs 21.1 をベースにした Meadow 2.00 がリリースされました。 今回はその紹介をします。
導入方法は前々回と基本的に同じです。 Unicode 対応,Python スクリプト編集, および読み取り専用化のための追加 Emacs Lisp ライブラリも 前々回の Meadow 1.15 用の site-lisp.tar.gz がそのまま使えます。
前回の説明では追加 Emacs Lisp ライブラリを Meadow のバージョンごとのディレクトリに置くように説明しました。 Meadow 2.00 の場合,下記に置くことになります。
/cygdrive/c/Meadow/2.00/site-lisp/
Meadow 1.15 もそうですが実は下記の場所でも OK です。*1
/cygdrive/c/Meadow/site-lisp/
.emacs ファイルには変更があります。
2_00-dot-emacs.tar.gz
を展開して得られる .emacs
ファイルを次のように置きます。*2
/cygdrive/c/Meadow/2.00/.emacs
Cygwin から Meadow を使う方法も基本は前々回と同じです。
下記の zsh スクリプトを /usr/local/bin/meadow
などとして置いて使います。
ファイルはここにあります。
なお,前回の説明でも触れましたが,
NTFS 上では (もしなければ)
chmod a+x /usr/local/bin/meadow
などとして実行パーミッションをつけるようにします。
#!/bin/zsh -
unset HOME LANG
for ((i = 1; i <= $#; i++))
do
if [ ${argv[i][0]} != '-' ]
then
argv[i]=`cygpath -w "$argv[i]"`
fi
done
exec C:/Meadow/2.00/bin/meadow "$@" &
スクリプト末尾の & は Meadow をバックグラウンド・プロセスとして動かすためのものです。
起動すると制御端末を捨てて独立したアプリケーションとなった Meadow 1.15
と異なり,Meadow 2.00 は cygwin から起動したとき,
フォアグラウンド・プロセスとして制御端末を握ったままになります。
悪いことに cygwin のプロセス制御を理解してくれませんから,
bg コマンドでバックグラウンド・プロセスにする,
といったことができません。
Meadow が終わるまで起動元のシェルが使えません。
これでは不便ですから,
はじめからバックグラウンド・プロセスにするわけです。
ところで実は Meadow 2.00 はまだ人柱用マシン1台にしかインストールしていません。 次のきらいがあるからです。
.emacs ファイルで face 指定をすると,
文字表示が微妙に等幅でなくなる。
特に後者は,
より自然な文字表示に一歩近づいた点ではたしかに進歩ですが,
プログラミング用途での是非はまだ 微妙です。
行頭の字下げには等幅性が維持されますから致命的な欠点ではありませんが,
他の環境ではきれいに表示されるプログラムの1行が,
Meadow 2.00 ではボールド体で横幅がとられ,折り返して2行になってしまう,
といったことがしばしばで,作業上のちょっとした引っかかりになっています。
起動のもたつきは高速なマシンでは解決されるはずです。 人柱のマシンは Pentium M 900MHz, 512MB, Windows XP Pro SP2 です。
上記を書いた後,最近になって,ボールド体やイタリック体を混ぜたときでも 半角文字についてだけなら等幅にする 方法がわかりましたので追記します。 使用するフォントごとに width を調整すれば OK でした。
以前の Meadow 1.15 の設定のように Andale Mono フォントをインストールしてある環境では tohaba-2_00-dot-emacs-using-andale-mono.tar.gz を展開して使ってください。 ただし,Andale Mono フォントは,以前は Microsoft の Web ページから無償でダウンロードできたのですが, 今はできなくなっているもようです。
Andale Mono でなく,Windows に標準で用意されているクーリエ体を使うときは, tohaba-2_00-dot-emacs.tar.gz を展開して利用してください。
等幅かどうかが問題になるのは,プログラムで次のようなコードを編集するときです。 等幅性が維持されないと,return に続く左括弧と, その次の行の空白で字下げされた左括弧の位置がそろいません。 位置が不ぞろいでは,括弧の対応がとれているかどうかが自明でなくなります。
return (((dev1 + 0.5) ** self.weight1) *
((dev2 + 0.5) ** self.weight2) *
((dev3 + 0.5) ** self.weight3))
以前,上記 8.2 節で,致命的な欠点ではない,と述べたのは 認識不足でした。*3
次回は X11 について述べます。
*1
実を言えば,自分が使っている Windows マシンのほとんどでは後者,
/cygdrive/c/Meadow/site-lisp/
に追加の Emacs Lisp ファイルを置いています。
前々回の説明は Meadow
のバージョン更新のときに余計な手間がかからないようにするためのものでしたが,
いらない世話でした。
*2 Meadow 1.15 ではモード行は単なる白黒反転文字でしたが, Meadow 2.00 では任意の色で描画できるようになっています。 既定の設定では水色になっていますが, 毎日使う道具としてはやや自己主張が強すぎるようですので, ここの .emacs では次のようにおとなしい色にしています。
(set-face-background 'mode-line "lightgray")
日本語 IM を使うとき,モード行に [び] と表示するのは, .emacs の次の設定によります。
(setq mw32-ime-mode-line-state-indicator-list '("[--]" "[び]" "[--]"))
もちろん,ここには任意の文字を指定することができます。 一般的な「あ」ではなく「び」にしたのは,BeOS の日本語 IM に標準版,サードパーティ版と受け継がれた伝統を ふと気まぐれに再現してみたものです。必然性はありません。 どうかお好みに合わせて適宜変更してください。
*3 といいますか,自分で return のような例にあって, これでは使い物にならないと気づいて対策したわけです。 撤回した記述は <del> で打ち消しましたので, ほとんどの Web ブラウザでは打ち消し線とともにまだ読むことができます。
なお,return の例は,スクリーンキャプチャではなく 文字として書いていますから,その表示自体の等幅性は Web ブラウザに依存します。 筆者の環境では,同じ Firefox 1.0 でも Mac OS X 版は正しく等幅になりましたが, Windows 版は第1行と第2,3行とで不ぞろいになりました。
なぜ今回 Meadow 2.00 にこだわったのかといえば, Meadow 1.15 で C# モードがうまく動かなかったからです。 Meadow と Cygwin と無償配布の .NET Framework SDK (日本語ドキュメント付き) の組み合わせは Windows 上で安価で強力な開発手段になり得ます。 次々々回あたりで詳しく述べます。
ちなみに,今回の改訂版の等幅化 .emacs ではモード行の色を 次のように指定しています。
(set-face-background 'mode-line "rgb:ee/ee/ee")
もしも Windows XP を使っていて, 「画面のプロパティ」→「デザイン」→「配色」 をクールな「シルバー」ではなく,心なごむ (かどうか, ディスプレイの設定により,かなり印象が異なりますが) 「オリーブ グリーン」にしているときは, 純粋な灰色ではやや青っぽく見えます。次の色あいが妥当でしょう。
(set-face-background 'mode-line "rgb:ee/ee/dd")
「配色」が既定の「青」の場合は…デリケートな色のバランスとは無縁では ないかと思います。