Після довгого дослідження в Інтернеті та ретельного вивчення 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!