高尾宏治日記 on はてなブログ

プログラミング言語Rubyを中心とした技術情報を扱うブログです(Microsoft Surfaceはやめました)。

Windows上のEmacs(gnupack)が強制終了しまくったけど、Emacsの設定を見直したら解決した(かも?)

Windows上でも普通のEmacs(Maedowとかじゃなくてね)が動くのでわくわくしていたのですが、実際には日本語入力をしていると強制終了しまくってなかなかにストレスがたまります。さすがに提供元の手元ではこの頻度では落ちていないだろうので、私のEmacsの設定が悪いのだと考えていました。

問題のある設定

IME関連の修正前の設定は以下です。これだと1時間に一回程度の頻度で日本語の入力中にEmacs自体が強制終了します。

(setq default-input-method "W32-IME")
(setq-default w32-ime-mode-line-state-indicator "[A]")
(setq w32-ime-mode-line-state-indicator-list '("[A]" "[あ]" "[A]"))
(w32-ime-initialize))

なお、インジケータに全角文字を使っている理由ですが、最初は日本語入力のときだけ「あ」と表示させていました(MS-IMEを使っていたらそう設定したくなりますよね♪)。しかし、英語(実際にはdefault)のフォントを「Consolas」、日本語(実際にはjapanese-jisx0208)に「メイリオ」フォントを使っていると日本語入力のON/OFFでステータスバーの高さがぴょこぴょこ変化します。これは嫌だと思って、すべて全角文字にしました。

解決した(かも?)

もしかするとインジケータには全角文字を使ってはダメかもしれないと思って、とりあえず以下の設定で様子を見ることにした(日本語入力時は「あ」と表示させたい...)。

(setq default-input-method "W32-IME")
(setq-default w32-ime-mode-line-state-indicator "[A]")
(setq w32-ime-mode-line-state-indicator-list '("[A]" "[J]" "[A]"))
(w32-ime-initialize))

一日経過しましたが、強制終了されないですね♪

もうしばらく様子を見てみます。