[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: ミニバッファでIMEがONにならない
- X-ml-count: 6488
- Subject: Re: ミニバッファでIMEがONにならない
- From: Hideyuki SHIRAI (白井秀行) <shirai@xxxxxxxxxxx>
- Date: Thu, 28 Jul 2005 21:52:12 +0900 (JST)
- X-mailer: Mew version 4.2.53 on Emacs 22.0.50 / Mule 5.0 (SAKAKI) / Meadow-3.00-dev (KIKU)
白井です。
# MW32-IME は普段使わないので、よくわからないし、関係ないかなぁ〜
# と思っていたのですが、関係してきちゃいました。
From: YAGI Tatsuya <ynyaaa@xxxxxxxxx> さん曰く
Subject: Re: ミニバッファでIMEがONにならない
Message-ID: <uack8po3n.fsf@xxxxxxxxx>
Date: Wed, 27 Jul 2005 18:58:20 +0900
> >Meadow-3.00-dev で mw32-ime-state を排除してみました。
> >
> >結構大きな修正ですので、使ってみて問題があるようであれば教えてく
> >ださい。 > Meadow-3.00-dev を使っている方
普段は tamago を使っているのですが、tamago ON の状態で他の
buffer に行って、戻ってくると、MW32-IME が召喚されちゃいます。
矢木さんの指摘の↓ですね。
> ・mw32-ime-select-window-hook, mw32-ime-set-selected-window-buffer-hook
> 中で current-input-method が non-nil かで判定している。
> (equal current-input-method "MW32-IME") で判定しないとまずいはず。
だけど、toggle-input-method() で MW32-IME を召喚したときは
current-input-method => "MW32-IME"
となっていますが、mw32-ime-toggle() で IME を動かしたときは
current-input-method => nil
なので、注意が必要です。(*1)
(*1) を解決するには mw32-ime-toggle() で IME を動かしたときも
current-input-method を設定しちゃうほうが楽だとおもうので、矢木
さんの↓
> ・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 内で実行しておく必要がある。
で良いとは思うのですが。。。しかし、以下の様なことができなくなり、
個人的にはちょっと困ってしまいます。
こんなの↓
ぼくは日頃 Wnn とか Anthy を tamago で使っています。たまに Anthy
の辞書に載っていない漢字を出すために Windows の IME を(都合によ
り)右 ALT で召喚することがあります。このとき、tamago の状態はそ
のままだし、(都合により)C-o で tamago の ON/OFF ができますが、
(activate-input-method "MW32-IME")
が動くとそれ以降 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)))
この二つはもっともだと思います。
--
白井秀行 (mailto:shirai@xxxxxxxxxxx)