わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Emacs 26.3を使う

 本家のバイナリは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のあと適当に打ってみると,日本語入力がオフになってくれました.ミニバッファ内で「半角/全角 漢字」のキーを押せば,日本語入力ができました.