バッファが読み込み専用のときに, l を押しても怒られないようにする

意味不明のタイトル.
分かるように書くと長くなりそうだから, 妥協してしまった.
どういうものかというと, 読み込み専用(buffer-read-only が t)のバッファで,
かな・カナモードから抜けようと, l を押すとこのバッファは読み込み専用だっぜっ!と怒られるのを何とかしたいってもの.
最新の ddskk だと直ってたりするのかな?
それとも自分のだけがおかしいのかな?
まあ, いいや.
メモがわりに書いておく.



最初は, 単純に skk-j-mode(かな・カナモード) から skk-latin-mode(ASCII モード) にするだけの関数を書いて,
skk-j-mode-map の l に割り当ててた.
でも, それじゃ, skk-j-mode のとき, zl とかして, 「→」を入力したいなあというときに問題が出たから,
やめて, skk-insert へのアドバイスを書いてみた.
こんなの.

(defadvice skk-insert
  (around advice-to-skk-insert-for-buffer-read-only-buffer activate compile)
  "buffer-read-only なバッファに対策する skk-insert へのアドバイス."
  (let* ((keys (this-command-keys))
         (key  (if (vectorp keys) (aref keys 0) keys)))
    (if (and (string= "l" key) skk-j-mode buffer-read-only)
        (skk-latin-mode (point))
      ad-do-it)))

単純に, 押されたキーが l で, skk-j-mode で, 現在のバッファが読み込み専用だったときのみ,
skk-insert を起動せずに, skk-latin-mode に強制的にするようにしただけ.


これで大丈夫だといいな.
つーか, ddskk もバージョンを最新にすべきだな. うん

更新時刻

2007年, 9月2日, 23:47