我一直在努力使用Semantic自动完成模式工作,但知道我完全卡住了。我通过语义-aa-complete-symbol成功地进行了语义自动完成(虽然由于某种原因它无法完成malloc(),这很奇怪)。
一些.emacs片段:
(add-to-list 'ac-dictionary-directories "~/emacs-src/auto-complete-1.3.1/")
(ac-config-default)
(ac-set-trigger-key "TAB")
(add-to-list 'ac-sources 'ac-source-semantic)
(add-to-list 'ac-sources 'ac-source-gtags)
(add-hook 'c-mode-hook
(defun my-c-mode-hook ()
(auto-complete-mode)
(setq ac-sources '(ac-source-semantic))
(ac-complete-semantic)))
如何使自动完成模式与Semantic一起工作?
答案 0 :(得分:5)
如果我理解正确,Semantic正在工作,你只是在努力设置自动完成。要做到后者,只需从
开始(require 'auto-complete-config)
(setq-default ac-sources '(ac-source-semantic-raw))
请注意,您必须使用“setq-default”来设置交流电源。那么你应该能够做到
M-x auto-complete-mode
在C / C ++缓冲区中,自动完成应查询语义完成。
答案 1 :(得分:1)
尝试通过以下方式调试自动完成失败:
M-x semantic-analyze-debug-assist RET
看看它说的是什么。查看\include\stdlib.h
以查看解析器对文件的看法。如果你在那里:
M-x bovinate RET
然后您可以搜索malloc
是否存在。如果没有,可能存在解析错误,或者某些未正确设置的杂项#define
。使用上面的代码,您通常可以在头文件中找到事情开始分解的位置。