ibus-mode の動作が Fedora 16 でおかしくなっている件について

Wiki で指摘をいただいて初めて知ったのですが、Fedora 16 で ibus-mode を使おうとすると、IBus を有効にしていないのにエンジン名が「xkb:layout:default:#0」のように表示され、文字の入力は一応できるようですが想定外の動作になってしまいます(たぶん一部のコマンドが動かない)。とりあえず workaround で、以下のように .emacs で設定すると普通に動くようになると思います。

(defadvice ibus-status-changed-cb
  (before ibus-fix-status (id status) activate)
  (if (and (stringp status)
	   (string-match "^xkb:layout:default:#[0-9]$" status))
      (setq status nil)))

IBus の本来の動作は、IBus をオフにすると disable シグナルを投げてくるのですが、Fedora 16 では独自のパッチが当てられていて、enable シグナルを "Default Layout" というエンジンを引数に与えて投げるようになっているためにこのような動作になるようです。"Default Layout" というのは実際には変換エンジンではなく、AZERTY や DVORAK などのキーボードレイアウトに対応するための仕組みのようです。もうちょっとマシなやり方はなかったんでしょうか…

ibus.el を修正すべきかどうか、もう少しよく調べてみます。

繰り返しますが、ここや Wiki のコメント欄はあまり見ていないので、不具合などがある場合は Launchpad の Bug tracker か Twitter の方にご連絡ください。

追記(2012/02/28):ibus-toggle コマンドや ibus-enable コマンドは、上の設定だけではうまく動作しません。以下の設定を追加すれば一応使えるようになると思います。

(defadvice ibus-enable
  (around ibus-fix-engine-name (&optional engine-name) activate)
  ad-do-it
  (unless (or engine-name
	      ibus-imcontext-status)
    (setq engine-name (car (ibus-get-active-engine-list)))
    ad-do-it))