Sono nelle fasi iniziali della creazione di major mode for Emacs per la navigazione e l'interazione con la rete di scambio di stack.La codifica di Emacs non funziona in modalità principale personalizzata
Coinvolti in esso sono diverse modalità principali, tutte con combinazioni di tasti ad un tasto simili a dired
. Ho guardato la fonte per dired
, ed estratto quello che pensavo avrebbe funzionato:
(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")
ma purtroppo questo sembra non avere assolutamente alcun effetto; il buffer viene semplicemente modificato proprio come qualsiasi altro buffer normale. Come posso ottenere una combinazione di tasti a chiave singola se non è così? (Che, a proposito, sono sicuro che ci sia qualcos'altro che sta succedendo qui.)
Serve più dettagli .... Carico il pacchetto a cui si fa riferimento e funziona perfettamente. Tutti i principali collegamenti alla modalità sono disponibili (anche se non definiti). –
Non definire le modalità principali con 'defun'. Usa 'define-derived-mode', che gestisce tutto il boilerplate per te, incluso uccidere le variabili locali, cambiare la mappa delle chiavi, impostare le modalità principali vars, eseguire i ganci, ecc. – lunaryorn