Dopo aver fatto una lunga ricerca nel web e un attento esame della ac
documentazione con molte prove sulla mia macchina per esaminare il codice riga per riga, ho trovato questa soluzione che può yasnippet
funzionare anche (optioinal) senza alcun dubbio.
mettilo nel tuo init.el
o .emacs
prenditi cura della sequenza:
(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)
Note:
come menzionato nella documentazione di ac
, aggiungere ac-modes
e agganciare prima del caricamento (ac-config-default)
.
Alcuni hanno suggerito di mettere un po 'di codice per giocare con la TAB
chiave di cui non avevo bisogno e non lo consiglio, poiché in qualche modo distruggerà qualcos'altro. Tuttavia, ho visto persone mettere qualcosa del genere alla fine poco prima global-auto-complete
:
(ac-set-trigger-key "TAB")
(ac-set-trigger-key "<tab>")
Fino a quando ho aggiunto il (ac-flyspell-workaround)
completamento automatico era troppo lento per pensare di usarlo in Auctex da quando utilizzo flyspell. Questo errore è stato menzionato anche nella documentazione. Grazie!
Bonus
Sono stato felice di sapere dalla documentazione, anche se non è molto chiaro come, che si possano aggiungere un dizionario (i) definito dall'utente! Ho provato questo e ha funzionato bene.
aggiungi queste due righe subito dopo la require-auto-complete
riga sopra:
(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
Ora nel tuo .txt
file aggiungi i tuoi candidati preferiti per il completamento. Salva te stesso dai candidati di meno di 4 lettere, non ne valgono la pena! Metti semplicemente le tue parole come separate da un feed di riga o RET
.
Esempio dei contenuti nel .txt
file:
inconsistencies
foobaremaild@foobar.com
do-not-put-your-password-here
long-line-in-any-programming-language-of-your-like
Goditi il completamento automatico in LaTeX / AUCTeX con Emacs!