Meadow3 と physical-line-mode と私

GNU Emacsを使い始めて20年近くなるけど、恥しながら、若いころ、lisp に挫折して以来、emacs lisp をろくに知らずにここまで来てしまった。
ところが、最近、Emacs には highlight-regexp なんていう便利な関数があることを知り、これなら色々使えるかも、と思い、いまさらながらだけれど、ちょっと elisp を触り始めている。一度 lisp には挫折しているものの、その後ちょっと ML などを触ったこともあるので、今回はなんとかなっているようだ。まぁ、若いころに比べると覚えは悪いが。

ところで、今迄、Windows 上で古い Meadow1 系を使っていたのだが、実は、これには highlight-regexp はない。そこで Meadow3 をインストールしてみたのだが、案の定トラブルが続発。

  • まずは、physical-line-mode で C-a や C-e の挙動がおかしくなった。(はてなユーザで悩んだ人も何人かいるようだ。 http://d.hatena.ne.jp/wakakumo/20060905, http://d.hatena.ne.jp/hito-d/20060220) これは、どうも、デフォルトのキーバインドが変更されたためらしい。例えば、今迄 C-a は、beginning-of-line にバインドされていたのが、move-beginning-of-line に変更されている。phsysical-line-mode は beginning-of-line をフックするようになっていて、move-beginning-of-line は対応していないようだ。これは、physical-line-mode を使う時に、local-set-key することで回避した。
  • 次に気がついたのは、カーソルの上下移動時のスピードがとても遅くなったことだ。physical-line.el をちょっと眺めていたら、

;; Emacs21 の vertical-motion は WIDE 文字とタブに未対応
;; Emacs21 で信頼できるのは「行頭での vertical-motion arg (> 0)」 のみ
(defun physical-line-the-vertical-motion--for-emacs21 (arg)
...

なんて記載があった。Meadow-3.00-dev (KIKU) は、emacs-version が 22.0.50.1 だったので、たぶんこの問題は解決しているだろうと仮定して、emacs-version が 22.0.50.1 以上なら vertical-motion を使うようにパッチをあててみたら、快適に動くようになった。(とはいえ、Meadow 1 より遅い...)

  • 私は、日本語入力は SKK を使ている。で、ファイルの種類によっては、かなモード時に、全角数字を入力するように、skk-rom-kana-rule-list を設定していたのだけれど、skk-restart しても、skk-rom-kana-rule-list の内容が反映されないようだ。Meadow 3 のパッケージについてきた、skkskk.el を見ると、どうも、skk-restart 時にデフォルト値に書き戻されているようだ。(elisp はよくわからないので勘違いかもしれないけど。)これは、skk-rom-kana-rule-list を書き戻さない、my-skk-restart 関数を書いて回避。

しかし、GNU Emacs (や SKK)なんて古より存在するソフトで、十分枯れたものだと思っていたけれど、以外と基本的な部分がちょこちょこかわってるんだなぁ、と感心するやら呆れるやら。