Pregunta:
Si me pongo
(ac-set-trigger-key "C-o")
en .emacs
, Co
.emacs
finalización automática, pero TAB también lo hace. Parece que se agrega Co
a los disparadores, mientras que quiero que sustituya a TAB, de modo que cuando presiono TAB no se realiza la autocompletación.
Con YASnippet puedes hacer algo como:
(define-key yas-minor-mode-map (kbd "TAB") nil)
Para que se elimine el enlace, ¿hay algo similar para la función de autocompletar?
Respuesta:
auto-complete
define tres mapas de teclas que pueden ser relevantes aquí:
-
ac-mode-map
: este mapa está activo cuando el modo deauto-complete-mode
está habilitado.ac-set-trigger-key
agrega el enlace para la clave de activación a este mapa. -
ac-completing-map
: este mapa está activo durante la finalización. De forma predeterminada,TAB
está destinado aac-expand
en este mapa. -
ac-menu-map
: este mapa está activo mientras se muestra la ventana emergente que muestra posibles finalizaciones (además deac-completing-map
), pero solo siac-use-menu-map
se establece en un valor nonil
.
Si desea asegurarse de que TAB
no haga nada que esté ni siquiera remotamente relacionado con la finalización, probablemente debería "desarmar" los enlaces en todos estos mapas (usando la misma técnica que demuestra para yas-minor-mode-map
en su pregunta ).
ACTUALIZAR :
Aquí hay una configuración mínima que evita que TAB
complete:
(package-initialize)
(require 'auto-complete-config)
(ac-config-default)
(define-key ac-mode-map (kbd "TAB") nil)
(define-key ac-completing-map (kbd "TAB") nil)
(define-key ac-completing-map [tab] nil)
Puede probarlo iniciando Emacs a través de emacs -Q
, copiando el código en el búfer *scratch*
y ejecutando Mx eval-buffer
RET .