本家のバイナリはhttps://www.gnu.org/software/emacs/download.htmlからダウンロードできるのですが,emacs-26.3-x86_64.zipを展開した実行プログラムは,インライン入力ができるとはいえ違和感のあるものでした.常用Emacsを,これまでの26.2に戻しました.
年明けに,冒頭のページを見てみると,emacs-26.3_x86_64-win-ime-20191231.zipがリンクされており,ダウンロードと展開をして実行すると,これまでと同じ使用感でした.
と言いたいのですが,C-s (isearch-forward)や,M-% (query-replace)や,M-xのあとに,何か打ち込むと,たびたび,日本語入力になってしまいました.
~/.emacsを見ると,以下のコードが入っていました.
;; Emacsでミニバッファに入る時IMEを一時的にOFFにする ;; http://d.hatena.ne.jp/Tan90909090/20121022/1350892975 (if (and (<= emacs-major-version 26) (<= emacs-minor-version 2)) (progn (defvar my-temp-ime-mode nil) (defun my-into-minibuffer-func() (setq my-temp-ime-mode (ime-get-mode)) (ime-force-off)) (defun my-quit-minibuffer-func() (if my-temp-ime-mode (ime-force-on)) (setq my-ime-temp nil)) ;; 通常のミニバッファ (add-hook 'minibuffer-setup-hook 'my-into-minibuffer-func) (add-hook 'minibuffer-exit-hook 'my-quit-minibuffer-func) ;; インクリメンタル検索 (add-hook 'isearch-mode-hook 'my-into-minibuffer-func) (add-hook 'isearch-mode-end-hook 'my-quit-minibuffer-func)))
はてなダイアリーの記事を見に行くと,現在はhttps://tan.hatenadiary.jp/entry/20121022/1350892975です.そこのコードには「(if (and (<= emacs-major-version 26) (<= emacs-minor-version 2))」がなく,いつかは思い出せませんが,自分で書いたものです.
「(<= emacs-minor-version 2)」を「(<= emacs-minor-version 3)」に書き換えるのは,バージョンが上がるたびに手直しをする必要があり面倒です.
バージョンとは異なる条件判定を,入れることにしました.具体的には,Windows用のEmacsのときに,「ミニバッファに入る時IMEを一時的にOFFにする」にします.以下のページを参考にしました.
scratchバッファで「system-type」を打ち込んで,C-jで「windows-nt」が表示されたのを確認してから,~/.emacsを編集しました.
(if (and (<= emacs-major-version 26) (<= emacs-minor-version 2))
を
(if (eq system-type 'windows-nt)
に置き換えてから保存し,Emacsを起動し直して,M-xのあと適当に打ってみると,日本語入力がオフになってくれました.ミニバッファ内で「半角/全角 漢字」のキーを押せば,日本語入力ができました.