3

我一直在努力使自动完成模式很好地与 Semantic 一起工作,但我知道我完全被卡住了。我已经通过semantic-ia-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)))

如何使自动完成模式与语义一起工作?

4

2 回答 2

5

如果我对您的理解正确,Semantic 正在工作,而您只是在努力设置自动完成功能。对于后者,只需从

(require 'auto-complete-config)
(setq-default ac-sources '(ac-source-semantic-raw))

请注意,您必须使用“setq-default”来设置 ac-sources。然后你应该能够做到

M-x auto-complete-mode

在 C/C++ 缓冲区和自动完成应该查询语义完成。

于 2013-01-25T21:20:30.367 回答
1

尝试通过以下方式调试自动完成失败:

M-x semantic-analyze-debug-assist RET

看看它说了什么。查看\include\stdlib.h解析器对文件的看法。如果在那里你这样做:

M-x bovinate RET

然后你可以搜索看看是否malloc有。如果不是,则可能存在解析错误,或者一些#define未正确设置的杂项。使用上面的内容,您通常可以在头文件中找到问题开始发生故障的地方。

于 2013-01-25T20:18:18.690 回答