После долгих исследований в интернете и тщательного изучения ac
документации на моей машине, чтобы построчно проверять код, я пришел к этому решению, которое также может yasnippet
работать (опционально) без каких-либо конфликтов.
Поместите это в вашу последовательность init.el
или .emacs
позаботьтесь о последовательности:
(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)
Примечания:
как указано в документации о ac
, добавление к ac-modes
и крюкам должны быть сделаны перед загрузкой (ac-config-default)
.
Некоторые предлагали использовать какой-то код для игры с TAB
ключом, который мне не нужен, и не рекомендуют, так как это позже как-то разрушит что-то еще. Тем не менее, я видел, как люди ставили что-то вроде этого в конце как раз перед global-auto-complete
:
(ac-set-trigger-key "TAB")
(ac-set-trigger-key "<tab>")
Пока я не добавил (ac-flyspell-workaround)
автозаполнение, было слишком медленно думать об его использовании в Auctex, так как я использую flyspell. Эта ошибка также упоминалась в документации. Спасибо!
Бонус
Я был рад узнать из документации, хотя не очень ясно, как, что можно добавить пользовательский словарь (и)! Я попробовал это и работал хорошо.
добавьте эти две строки сразу после require-auto-complete
строки выше:
(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
Теперь в вашем .txt
файле добавьте ваших любимых кандидатов для завершения. Спасите себя от кандидатов длиной менее 4 букв, они того не стоят! Проще говоря, слова, которые вам нравятся, разделяются переводом строки или RET
.
Пример содержимого в .txt
файле:
inconsistencies
foobaremaild@foobar.com
do-not-put-your-password-here
long-line-in-any-programming-language-of-your-like
Наслаждайтесь автозаполнением в LaTeX / AUCTeX с Emacs!