教程来自这里
http://ergoemacs.org/emacs/elisp_create_major_mode_keymap.html
准备函数
(defun my-mode-cmd1 ()
(interactive)
(message "cmd1 called"))
(defun my-mode-cmd2 ()
(interactive)
(message "cmd2 called"))
(defun my-mode-cmd3 ()
(interactive)
(message "cmd3 called"))
(defun my-mode-cmd4 ()
(interactive)
(message "cmd4 called"))
教程中的键位绑定
(defvar my-mode-map nil "Keymap for `my-mode-mode")
(progn
(setq my-mode-map (make-sparse-keymap))
(define-key my-mode-map (kbd "C-c C-a") 'my-mode-cmd1)
(define-key my-mode-map (kbd "C-c C-b") 'my-mode-cmd2)
(define-key my-mode-map (kbd "C-c C-c") 'my-mode-cmd3)
(define-key my-mode-map (kbd "C-c C-d") 'my-mode-cmd4)
)
(define-derived-mode my-mode prog-mode "my"
(use-local-map my-mode-map))
自己尝试的键位绑定
(define-derived-mode my-mode prog-mode "my"
(local-set-key (kbd "C-c C-a") 'my-mode-cmd1)
(local-set-key (kbd "C-c C-b") 'my-mode-cmd2)
(local-set-key (kbd "C-c C-c") 'my-mode-cmd3)
(local-set-key (kbd "C-c C-d") 'my-mode-cmd4)
)
问题
请问下这两个做法区别在哪里,绑定键位不需要这么麻烦吧,还是说这两种方法有不同的使用对象?