[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: ミニバッファでIMEがONにならない



矢木です。

MIYOSHI Masanori <miyoshi@xxxxxxxxxxx> writes:
>Meadow-3.00-dev で mw32-ime-state を排除してみました。
>
>結構大きな修正ですので、使ってみて問題があるようであれば教えてく
>ださい。 > Meadow-3.00-dev を使っている方

Meadow3 は使っていないので meadow.el を読んでみただけですが、

・mw32-ime-select-window-hook, mw32-ime-set-selected-window-buffer-hook
  中で current-input-method が non-nil かで判定している。
  (equal current-input-method "MW32-IME") で判定しないとまずいはず。

・mw32-ime-select-window-hook の
  (when (eq new (minibuffer-window))
    (setq current-input-method nil))
  があるとミニバッファから C-x o をくり返して戻って来ると
  IMEが強制的にOFFになってしまう。

  C-g でミニバッファを抜けた場合への対処としては、quail に倣って
  mw32-ime-state-switch でIMEをONにする処理の中に
  (if (eq (selected-window) (minibuffer-window))
      (add-hook 'minibuffer-exit-hook 'mw32-ime-exit-from-minibuffer))
  を入れておくのが良いと思う。mw32-ime-exit-from-minibuffer の定義は次の通り。
  (defun mw32-ime-exit-from-minibuffer ()
    (inactivate-input-method)
    (if (<= (minibuffer-depth) 1)
        (remove-hook 'minibuffer-exit-hook 'mw32-ime-exit-from-minibuffer)))

・mw32-ime-toggle が current-input-method を無視している。
  (defun mw32-ime-toggle ()
    (interactive)
    (if (equal current-input-method "MW32-IME")
        (inactivate-input-method)
      (activate-input-method "MW32-IME")))
  こんな感じにして、mw32-ime-state-switch 中の
  fep-force-on/off の引数を nil にすれば良いと思う。
  その場合 mw32-ime-on/off-hook, mw32-ime-mode-line-update は
  mw32-ime-state-switch 内で実行しておく必要がある。

・mw32-ime-toroku-region で読みを入力する時に
  ミニバッファでIMEをONにしているが、current-input-method が nil のまま。
  read-multilingual-string を使うと良いのでは。

おわり
mw32-ime-toroku-region-yomigana と isearch-ime-keymap の意味がわからない。