Après avoir fait une longue recherche sur le web et un examen minutieux de la ac
documentation avec beaucoup d'essais sur ma machine pour examiner le code ligne par ligne, j'ai trouvé cette solution qui peut aussi yasnippet
fonctionner (optioinal) sans aucun conflit.
mettez cela dans votre séquence init.el
ou en .emacs
prenant soin de:
(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)
Remarques:
comme mentionné dans la documentation de ac
, l'ajout à ac-modes
et les crochets doivent être effectués avant le chargement (ac-config-default)
.
Certains ont suggéré de mettre du code à jouer avec une TAB
clé dont je n'avais pas besoin et que je ne recommande pas car cela détruirait quelque chose d'autre plus tard. Cependant, j'ai vu des gens mettre quelque chose comme ça à la fin juste avant global-auto-complete
:
(ac-set-trigger-key "TAB")
(ac-set-trigger-key "<tab>")
Jusqu'à ce que j'ajoute l' (ac-flyspell-workaround)
auto-complétion était trop lent pour penser à l'utiliser dans Auctex depuis que j'utilise flyspell. Ce bug a également été mentionné dans la documentation. Merci!
Bonus
J'ai été heureux de savoir à partir de la documentation, mais pas très clairement comment, que l'on peut ajouter un ou des dictionnaires définis par l'utilisateur! J'ai essayé cela et j'ai bien fonctionné.
ajoutez ces deux lignes juste après la require-auto-complete
ligne ci-dessus:
(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
Maintenant, dans votre .txt
dossier, ajoutez vos candidats préférés pour l'achèvement. Sauvez-vous des candidats de moins de 4 lettres, ils n'en valent pas la peine! Mettez simplement vos mots séparés par un saut de ligne ou RET
.
Exemple du contenu du .txt
fichier:
inconsistencies
foobaremaild@foobar.com
do-not-put-your-password-here
long-line-in-any-programming-language-of-your-like
Profitez de l'auto-complétion dans LaTeX / AUCTeX avec Emacs!