Я нахожусь на ранней стадии создания основного режима для Emacs для просмотра и взаимодействия со стеком. Обменная сеть.
В нем задействовано несколько основных режимов, все с одноклавишными сочетаниями клавиш, похожими на 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
, который обрабатывает за вас весь шаблон, включая уничтожение локальных переменных, переключение карты клавиш, установку переменных основного режима, запуск хуков и т. д. - person lunaryorn   schedule 28.02.2013