我一直在努力让标签在自动完成模式下运行很长一段时间,而且似乎我的尝试一直是徒劳的。
我有两个问题:
这是我的情况:
我有一个相对较大的代码库,我想用gtags索引它,然后在我的自动完成中使用gtags代码提示。源代码中有许多级别的目录,但它们都属于我生成gtags的根目录。
根据我的理解,如果我已经正确设置了所有内容,我应该能够键入几个字母,并且如果源位于gtags索引的目录中,则基于gtags自动完成。例如,如果我在根目录中保存了我的gtags(通过从命令行调用gtags
),如下所示:
Root_Project_Dir
├── GPATH
├── GRTAGS
├── GSYMS
├── GTAGS
│
├── Folder1
│ └──my_structs.h
├── Folder2
└──some_code.cpp
my_structs.h的定义类似于......
struct testStruct{
int a;
char blah_blah;
double context;
};
那么这意味着如果我在some_code.cpp中定义这个结构,auto-complete可能会尝试在.cpp源代码中完成我的结构。它是否正确?换句话说,如果我定义testStruct mystruct = new testStruct();
,那么下次我调用" mystruct->
"之类的东西时,自动完成对话框应该弹出结构的成员?
我的玩具.emacs文件具有以下裸骨自动完成设置(以及正确的加载路径)。它似乎能够从工作目录中识别并自动完成代码。但是,它似乎并不知道源目前所在目录之外的任何内容。
;; auto-complete stuff
require 'auto-complete)
(require 'auto-complete-config)
(ac-config-default)
(defun ac-common-setup ()
(setq ac-sources (append ac-sources '(ac-source-gtags))))
我在互联网上看了很多,但我还没找到任何解决方案。 我看到this帖子,但解决方案只是说要添加ac-source-gtags。我想我需要更多的指导才能让事情顺利进行,因为我对elisp并不太熟悉。