Respuesta corta:
(eval-after-load 'cc-mode
'(progn
(define-key c-mode-base-map "/" 'self-insert-command)
(define-key c-mode-base-map "*" 'self-insert-command)))
Así es como voy alrededor que:
Averigüe la función obligado a /
: C-h k /
Dice "/ ejecuta el comando c-electric-slash, que es una función compilada interactiva Lisp en 'cc-cmds.el'".
(Si no ve el enlace a cc-cmds.el
, entonces no tiene instaladas las fuentes elisp. Suponiendo que no está en Windows, puede utilizar el gestor de paquetes del sistema para instalar el paquete emacs-el
y tratar de nuevo.)
Siga ese enlace para abrir cc-cmds.el
. La búsqueda de c-electric-slash
no encuentra nada más que la definición de la función, por lo que las claves no están vinculadas en este archivo. Buscando en cc-mode.el
desde este directorio revela:
(define-key c-mode-base-map "/" 'c-electric-slash)
Ahora sabemos el nombre del "mapa de teclado" en la que la combinación de teclas para anular /
.
Si añade algo como esto a su archivo de inicio, probablemente obtendrá un error en el arranque:
(define-key c-mode-base-map "/" 'self-insert-command)
... porque se carga el fichero init antes cc-mode.el es, y c-mode-base-map
no está definido. Entonces usamos eval-after-load
(como en la parte superior de mi respuesta). El primer argumento, 'cc-mode
, tiene que coincidir con la declaración provide
al final de cc-mode.el. Si no sabe lo que significa el progn
, haga C-h f progn
.
Si te gusta este estilo de aprendizaje/descubrimiento de Emacs, puedes considerar leer mi "How to learn Emacs".
¡Genial! ¡Qué gran explicación! ... y funciona también :) ... Gracias ... y yo ' Definitivamente estaré leyendo su guía sugerida. –
Sugerencia: Actualice esto para usar 'with-eval-after-load' –
Por lo que vale, estaba luchando con este problema al crear un modo importante derivado de' c-mode'. añadiendo las dos líneas 'define-key' a la definición del mapa de teclas de mi modo (y cambiando' c-mode-base-map' al nombre de mi mapa local), pude eliminar este comportamiento. ¡Gracias! – ohruunuruus