2009/7/29 に 23.1 がリリースされた。以下の内容は、主にそのしばらく前の pretest の emacs 23.0.94 以降を試したときの状況。
Emacs 23 に附属の NEWS をざっと見る。 最大の違いはフォントの指定で、Emacs 23 からは TrueType フォントをアンチエイリアスをかけて使用することができ、その指定の仕方もとても簡単になった。これにより見た目が随分と改善された。また UNICODE の扱いもずっと良くなっている。
.Xresources
には
Emacs.geometry: 80x50-34+10 Emacs*FontBackend: xft Emacs*font: Inconsolata\-dz-9のように書いておいた。フォントは Inconsolata-dz を 9pt に指定した。(名前は、コマンドラインから fc-list で確認した。フォント名にハイフンが含まれている時には\でエスケープしないといけないようだ。)
.Xresources
でも font を指定するのは、現在の .emacs.el
の設定では、そうしないと最初に開くフレームの大きさやフォントが正しく設定されなかったため。
.emacs.el
のフォントの設定部分は次のようにした。
(if (and (window-system) (string-match "^23\." emacs-version)) (progn (set-frame-font "Inconsolata\-dz-9") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 (font-spec :family "M+1M+IPAG" :size 14) ) (setq default-frame-alist (append '((width . 82) (height . 50) ) default-frame-alist)) (global-font-lock-mode t) (setq font-lock-maximum-decoration t) (setq fast-lock nil) (setq lazy-lock nil) (setq jit-lock t) ) )
set-fontset-font
の部分では、
(frame-parameter nil 'font)
の値のフォントセットのjapanese-jisx0208 に対するフォントをその次の引数の font-specで指定されるフォントに修正している。
.Xresource
に上のように書いた場合は
(frame-parameter nil 'font)
の値のフォントセット名は
"-unknown-Inconsolata-dz-normal-normal-normal-*-12-*-*-*-m-0-iso10646-1"になる。ここではそのjapanese-jisx0208に対するフォントを M+フォント系の M+1M+IPAG に指定しているわけである。 この font-spec の指定の仕方はいくつかバリエーションがある。
:size 14
を指定したのは、そうしないと日本語のフォントの幅が欧文フォントの幅の2倍にならないため。
ただし、このように指定すると、たとえば auctex 付属の font-latex で、セクション名のスケールが効かなくなったりするなどの副作用もある。日本語の文字幅にこだわらないなら付けない方がいいかもしれない。
face-font-rescale-alist
を設定することで日本語と欧文の文字幅を設定することもできそうなのだが、今のところ成功していない。
また、欧文フォントと日本語のフォントでは高さが違う。実際にはそれほど気にならないだろうが、例えば欧文のみの行に日本語が追加された場合、行の高さが微妙に変化する。
TrueType とか OpenType が使えるようになったので、フォントをいろいろと検討してみた。 私の場合、それなりにプログラムも書くし、ノートの狭い画面でも使うことが多いので、選択の条件としては、次のような基準が考えられる。
google で検索すると、次のような候補が見つかる。
Inconsolata-g とか Inconsolata-dz とかは、Inconsolata の一部を改変したものだが、 引用符が傾いていないところが趣味に合う。また、全体的に大きくなって日本語との組み合わせがオリジナルよりかはしっくりくる。M+ は、あたり前だが日本語との相性はバッチリ。ただ個人的に & の字形があまり好きでないのと、英文のみだと個人的に若干上下にまのびして見える印象がある。VLゴシックも同様。
日本語は M+1M+IPAG (size は見やすいように 18pt に変更) で、アスキーの部分を変更してみた。 いずれも Vine Linux 4.2 の Emacs 23.0.94 上でとったもの。
Bitstream Vera Sans Mono
DejaVu Sans Mono
M+1M+IPAG
Consolas
Inconsolata
Inconsolata-g
Inconsolata-dz
ちなみに Inconsolata は TeX 用のパッケージもある。listings 環境とかで使ってみると、かなりいい感じ。今は Inconsolata-dz を M+1M+IPAG と組み合わせて利用。
ちなみに、上のスクリーンショットを取る際に使った使い捨て emacs lisp はこのmycapture.el. ImageMagick の import を利用している。
sample.txt
を用意して単独のフレームで開き、最後の
S式を評価すると (Emacs にとっての) カレントディレクトリに PNG 形式で保存するようになっている。使い捨てなので汎用性なし。
C-nやC-pで行を移動する際には、以前のように論理行ではなく画面で見えている行 (以下、画面行) で移動するようになった。これで長い行を含むファイルを編集する際にも特別な emacs lisp パッケージを使う必要がなくなって便利。ただし、C-kなどは以前と同様論理行に対して作用する。
移動だけでなく編集も画面行に対して行うために、Visual Line Mode というマイナーモードができた。このモードでは適当な単語の位置で折り返して表示し、フリンジの改行マークも表示しない。ただ、日本語のようにスペースで単語を区切らない言語ではあまり使い勝手は良くなさそう。
C-u C-\で french-prefix などを選んでラテン文字を入力しようとしたら、Invalid code(s) とか言われて入力できなかった。
(set-keyboard-coding-system 'utf-8-unix)とすると、普通に入力できるようになった。
Wanderlust を使う際は、最新の flim (flim-1.14.9以降) でないと、添付ファイルの展開に失敗する。またパッチをあてないと quoted-printable のデコードなどに問題があるようだ。 GMANEの記事 を参照。
野鳥 (TeX統合環境), imaxima (maxima インターフェース), lookup (辞書検索), slime (Common Lisp 開発環境), emacs-w3m (w3m 利用のウェブブラウザ), などは特に問題なく使えている。
以前は GnuPG での暗号化、復号化に gpg.el
を使っていたのだが、これを使用しなくても拡張子が gpg のファイルはデフォルトで読み書きしてくれるようになった。これは、はじめから EasyPG がついてくるようになったため。
他にも ruby mode や nXML mode が最初からついてくるようになった。
transient-mark-mode
がデフォルトで on になった。
これは目障りだったので、.emacs.el
に
(setq transient-mark-mode nil)と書いておいた。
emacslient に --tty
オプションがついた。
これは便利なのだが、背景色とかモードラインの色がおかしい。要調整。
pretest の emacs-23.0.94 では、ちょっと大きな日本語ファイル (1MBを切るくらい) を保存しようとすると、core2 duo でも5秒くらいかかってしまう。utf-8 で保存しても同様。英文だと結構巨大なファイルでも問題なく保存できるので、日本語関連の問題だと思われる。
という話を同僚のY氏にしたところ、翌日にパッチが送られてきた。試してみると10倍ほど保存にかかる時間が短かくなっていた。これならストレスなく使用できそう。バグレポートもその日に送ったそうで、23.0.95 では修正されていた。ありがたいことです。