Risposta breve:
(eval-after-load 'cc-mode
'(progn
(define-key c-mode-base-map "/" 'self-insert-command)
(define-key c-mode-base-map "*" 'self-insert-command)))
Ecco come vado circa iT:
Scopri la funzione legata alla /
: C-h k /
Dice "/ esegue il comando c-electric-slash, che è una funzione Lisp integrata interattiva in 'cc-cmds.el'".
(Se non vedi il link al cc-cmds.el
, allora non si hanno i sorgenti elisp installati. Supponendo che non sei su Windows, è possibile utilizzare il gestore di pacchetti del sistema per installare il pacchetto emacs-el
e provare di nuovo.)
Seguire questo collegamento per aprire cc-cmds.el
. La ricerca di c-electric-slash
non trova altro che la definizione della funzione, quindi le chiavi non sono associate in questo file. Ricerca in cc-mode.el
da questa directory rivela:
(define-key c-mode-base-map "/" 'c-electric-slash)
Ora sappiamo il nome della "mappa della tastiera", in cui eseguire l'override del /
combinazione di tasti.
Se si aggiunge qualcosa di simile al file init, probabilmente otterrete un errore all'avvio:
(define-key c-mode-base-map "/" 'self-insert-command)
... perché il file di inizializzazione viene caricato prima cc-mode.el è, e c-mode-base-map
non è definito. Quindi usiamo eval-after-load
(come in cima alla mia risposta). Il primo argomento, 'cc-mode
, deve corrispondere all'istruzione provide
alla fine di cc-mode.el. Se non sai cosa significa il progn
, fai C-h f progn
.
Se ti piace questo stile di apprendimento/scoperta di Emacs, potresti prendere in considerazione la lettura del mio "How to learn Emacs".
fonte
2012-06-16 20:29:41
Brillante! Che bella spiegazione! .. e funziona anche :) :) Grazie ... e io ' –
Suggerimento: Aggiorna questo per usare 'with-eval-after-load' –
Per quello che vale, ho avuto problemi con questo problema durante la creazione di una modalità principale derivata da' c-mode'. aggiungendo le due linee 'define-key' alla definizione della keymap della mia modalità (e cambiando' c-mode-base-map' al nome della mia mappa locale), sono stato in grado di eliminare questo comportamento. – ohruunuruus