key-bindings – Eliminar el disparador TAB de la función de autocompletar

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 de auto-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 a ac-expand en este mapa.

  • ac-menu-map : este mapa está activo mientras se muestra la ventana emergente que muestra posibles finalizaciones (además de ac-completing-map ), pero solo si ac-use-menu-map se establece en un valor no nil .

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 .

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım