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)

