在Web上进行了长期研究并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)
自动补全功能,因为我使用了flyspell,因此才想到在Auctex中使用自动补全功能太慢了。文档中也提到了此错误。谢谢!
奖金
我很高兴从文档中知道,尽管还不清楚如何,可以添加一个用户定义的词典!我尝试了一下,效果很好。
在上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
文件中添加您喜欢的候选人以完成工作。从少于四个字母的候选人中拯救自己,这是不值得的!只需将您喜欢的单词用换行或分隔即可RET
。
.txt
文件内容的示例:
inconsistencies
foobaremaild@foobar.com
do-not-put-your-password-here
long-line-in-any-programming-language-of-your-like
借助Emacs在LaTeX / AUCTeX中享受自动补全功能!