latex – ¿Cómo hacer que la función de autocompletar funcione en modo AucTeX?

Pregunta:

Quiero que la auto-complete (ac) funcione cuando estoy dentro del modo AucTeX . Recibo todos los paquetes de MELPA mediante la instalación del paquete.

Este es mi código relevante en el archivo init.el :

(require 'package)
(package-initialize)
(require 'auto-complete-config)
(ac-config-default)   
(global-auto-complete-mode t)

como puede ver, aunque estoy configurando ac globalmente, no aparece en AucTeX . Sin embargo, siguiendo las instrucciones en este emacswiki , el modo ac se mostró en la barra de estado en AucTeX pero no funcionaba, no se completaba automáticamente escribiendo caracteres.

Notas
Emacs 24.4 bajo Windows 7 de 32 bits y los paquetes se actualizaron.

Respuesta:

Después de hacer una larga investigación en la web y un examen cuidadoso de la documentación de ac con muchas pruebas en mi máquina para examinar el código línea por línea, se me ocurrió esta solución que puede hacer que yasnippet funcione también (opcional) sin ningún conflicto.

ponga esto en su init.el o .emacs cuidando la secuencia:

(require 'package)
(package-initialize)

;; yasnippet code 'optional', before auto-complete
(require 'yasnippet)
(yas-global-mode 1)

;; auto-complete setup, sequence is important
(require 'auto-complete)
(add-to-list 'ac-modes 'latex-mode) ; beware of using 'LaTeX-mode instead
(require 'ac-math) ; package should be installed first 
(defun my-ac-latex-mode () ; add ac-sources for latex
   (setq ac-sources
         (append '(ac-source-math-unicode
           ac-source-math-latex
           ac-source-latex-commands)
                 ac-sources)))
(add-hook 'LaTeX-mode-hook 'my-ac-latex-mode)
(setq ac-math-unicode-in-math-p t)
(ac-flyspell-workaround) ; fixes a known bug of delay due to flyspell (if it is there)
(add-to-list 'ac-modes 'org-mode) ; auto-complete for org-mode (optional)
(require 'auto-complete-config) ; should be after add-to-list 'ac-modes and hooks
(ac-config-default)
(setq ac-auto-start nil)            ; if t starts ac at startup automatically
(setq ac-auto-show-menu t)
(global-auto-complete-mode t) 

Notas:
como se menciona en la documentación de ac , la adición a ac-modes y hooks debe hacerse antes de cargar (ac-config-default) .

Algunos sugirieron poner un código para jugar con la tecla TAB que no necesitaba y no recomiendo, ya que de alguna manera destruirá algo más más adelante. Sin embargo, vi que la gente ponía algo como esto al final justo antes de global-auto-complete :

(ac-set-trigger-key "TAB")
(ac-set-trigger-key "<tab>")  

Hasta que agregué (ac-flyspell-workaround) la finalización automática era demasiado lenta para pensar en usarla en Auctex ya que uso flyspell. Este error también se mencionó en la documentación. ¡Gracias!

Prima
Me alegró saber por la documentación, aunque no muy claro cómo, ¡que se pueden agregar diccionarios definidos por el usuario! Intenté esto y funcionó bien.

agregue estas dos líneas justo después de la línea require-auto-complete anterior:

(add-to-list 'ac-dictionary-directories "~/.emacs.d/.dict") ; make sure this folder exists
(add-to-list 'ac-user-dictionary-files "~/.emacs.d/.dict/custom-dict.txt") ; put any name to your `.txt` file  

Ahora, en su archivo .txt , agregue sus candidatos favoritos para completar. Sálvate de candidatos de menos de 4 letras, ¡no valen la pena! Simplemente coloque las palabras que le gusten separadas por un avance de línea o RET .

Ejemplo del contenido del archivo .txt :

inconsistencies
foobaremaild@foobar.com
do-not-put-your-password-here
long-line-in-any-programming-language-of-your-like

¡Disfrute de la finalización automática en LaTeX / AUCTeX con Emacs!

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım