我正在创建一个Emacs的主要模式,用于浏览和与Stack Exchange网络进行交互。
其中涉及几个主要模式,所有这些模式都具有类似于
其中涉及几个主要模式,所有这些模式都具有类似于
dired
的一键绑定。我查看了dired
的源代码,并提取了我认为可行的部分。(defvar stack-network-mode-map
(let ((map (make-keymap)))
(define-key map "n" 'stack-network-next-site)
(define-key map "p" 'stack-network-previous-site)
(define-key map "," 'stack-network-move-site-up)
(define-key map "." 'stack-network-move-site-down)
(define-key map "j" 'stack-network-jump-to-bookmarks)
(define-key map "\C-m" 'stack-network-do-enter-site) ; ret
(define-key map "o" 'stack-network-do-enter-site)
(define-key map "u" 'stack-network-do-profile-summary)
(define-key map "\C-uu" 'stack-network-do-profile-summary-for-user)
(define-key map "i" 'stack-network-do-inbox)
(define-key map "b" 'stack-network-toggle-bookmark)
(define-key map "?" 'stack-network-list-functions) ; [1]
(define-key map "\C-i" 'stack-network-display-details) ; tab
map)
"Keymap for Stack Exchange: Network Browser major mode")
但不幸的是,这似乎完全没有效果;缓冲区就像任何其他正常的缓冲区一样被编辑。如果这不是方法,我怎样才能实现单键绑定呢?(顺便说一句,我确定这就是方法。这里肯定还有其他问题。)
defun
来定义主模式。请使用define-derived-mode
,它会为您处理所有样板文件,包括清除本地变量、切换键映射、设置主模式变量、运行钩子等。 - user355252