define-key から keymap-set に移行

Emacs 29.1からキーバインドの設定には define-key ではなく keymap-set を使うように変更(推奨)されています。自分の設定も変更してみました。(see What’s New in Emacs 29.1?)

Table 1: before/after
変更前 変更後
define-key keymap-set
global-set-key keymap-global-set
local-set-key keymap-local-set
global-unset-key keymap-global-unset
local-unset-key keymap-local-unset
substitute-key-definition keymap-substitute
define-key-after keymap-set-after
lookup-key keymap-lookup
kye-binding keymap-lookup
locak-key-binding keymap-local-lookup
global-key-binding keymap-global-lookup

これまで kbd を挟んでいましたが、単純な置き換えではうまく行かないパターンもあったので、 SPC などの指定は、 "SPC", "RET", "<tab>", "S-<tab>", "<delete>" を kbd を挟まずに指定することでうまくいきました。

例えばこんな設定になります。

;; (global-set-key (kbd "M-v") 'yank)
(keymap-global-set "M-v" 'yank)

;; (global-set-key [delete] 'delete-char)
(keymap-global-set "<delete>" 'delete-char) ;; "delete" ではダメ。

;; (global-set-key (kbd "M-SPC") 'my-toggle-ime-ns)
(keymap-global-set "M-SPC" 'my-toggle-ime-ns)

;; (define-key isearch-mode-map (kbd "S-SPC") 'my-toggle-ime-ns)
(keymap-set isearch-mode-map "S-SPC" 'my-toggle-ime-ns)

;; (global-set-key (kbd "C-M-t") 'beginning-of-buffer)
(keymap-global-set "C-M-t" 'beginning-of-buffer)

;; (global-set-key (kbd "C-t") 'scroll-down)
(keymap-global-set "C-t" 'scroll-down)

;; (global-set-key (kbd "C-c g") 'goto-line)
(keymap-global-set "C-c g" 'goto-line)

;; (global-set-key (kbd "M-]") 'bs-cycle-next)
(keymap-global-set "M-]" 'bs-cycle-next)

;; (global-set-key (kbd "RET") 'electric-newline-and-maybe-indent)
(keymap-global-set "RET" 'electric-newline-and-maybe-indent)

;; (global-set-key (kbd "M-=") 'count-words)
(keymap-global-set "M-=" 'count-words)

;; (global-set-key (kbd "C-;") 'comment-dwim) ;; M-; is the defualt
(keymap-global-set "C-;" 'comment-dwim) ;; M-; is the defualt

;; (global-set-key (kbd "C-c f m") 'moom-fill-band)
(keymap-global-set "C-c f m" 'moom-fill-band)

;; (define-key counsel-mode-map [remap find-file]  nil)
;; (substitute-key-definition 'find-file nil counsel-mode-map)
(keymap-substitute counsel-mode-map 'find-file nil nil)

;; (define-key KEYMAP [remap OLDDEF] NEWDEF)
;; (define-key counsel-mode-map [remap find-file] nil)
;; (substitute-key-definition OLDDEF NEWDEF KEYMAP &optional OLDMAP)
;; (substitute-key-definition 'find-file nil counsel-mode-map)
amazon_banner_large
amazon_banner_small