使用gtags设置emacs自动完成功能

时间:2014-04-17 19:56:35

标签: c++ emacs elisp gnu-global

我一直在努力让标签在自动完成模式下运行很长一段时间,而且似乎我的尝试一直是徒劳的。

我有两个问题:

  1. 如何判断自动完成模式是否与gtags一起使用?
  2. 如何设置gtags以使用自动完成功能? (包括我需要在emacs之外完成所有设置的步骤。)
  3. 这是我的情况:

    我有一个相对较大的代码库,我想用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并不太熟悉。

0 个答案:

没有答案