Emacs,用于向量的C++代码补全

6
我是Emacs的新手,这是我的一段示例代码。我已经安装了GNU Emacs 23.1.1 (i386-mingw-nt6.1.7600),安装了cedet-1.0pre7.tar.gz.,安装了ELPAcompany。您可以在底部找到我的简单Emacs配置。
问题是,当我在main()中输入q[0]并按.(点)时,我看到向量的37个成员,而不是期望的Person,尽管期望的是first_namelast_name。在函数greet()中,自动完成正常工作,但与向量无关。
我的问题是,如何为向量元素实现代码自动完成?
#include <iostream>
#include <vector>
using namespace std;

class Person
{
  public:
    string first_name;
    string last_name;
};

void greet(Person a_person)
{
  // a_person.first_name is completed as expected!
  cout << a_person.first_name << "|";
  cout << a_person.last_name << endl;
};

int main()
{
  vector<Person> q(2);

  Person guy1;
  guy1.first_name = "foo";
  guy1.last_name = "bar";

  Person guy2;
  guy2.first_name = "stack";
  guy2.last_name = "overflow";

  q[0] = guy1;
  q[1] = guy2;
  greet(guy1);
  greet(guy2);
  // cout q[0]. I want to see first_name or last_name here!
}

我的Emacs配置:
;;; This was installed by package-install.el.
;;; This provides support for the package system and
;;; interfacing with ELPA, the package archive.
;;; Move this code earlier if you want to reference
;;; packages in your .emacs.
(when
    (load
     (expand-file-name "~/.emacs.d/elpa/package.el"))
  (package-initialize))

(load-file "~/.emacs.d/cedet/common/cedet.el")
(semantic-load-enable-excessive-code-helpers)
(require 'semantic-ia)

(global-srecode-minor-mode 1)
(semantic-add-system-include "/gcc/include/c++/4.4.2" 'c++-mode)
(semantic-add-system-include "/gcc/i386-pc-mingw32/include" 'c++-mode)
(semantic-add-system-include "/gcc/include" 'c++-mode)


(defun my-semantic-hook ()
  (imenu-add-to-menubar "TAGS"))
(add-hook 'semantic-init-hooks 'my-semantic-hook)
2个回答

7

谢谢pokita,至少现在我知道这不是我对Emacs和CEDET的知识缺乏。 - Caglar Toklu

3

GCCSense

这是一个在Emacs中完成C ++代码的示例:

emacs gccsense screenshot


谢谢,我看到Windows不支持,但我会在Ubuntu上使用它,这也是一种选择。 - Caglar Toklu
我使用Emacs来进行C++编程。我使用CEDET,但只显示一列,如何像这个例子一样显示两列呢? - Eagle
@Eagle:这个截图展示了GCCSense的能力。我不知道是否可以将GCCSense插入CEDET中。 - jfs
2
Windows版本可以在这里找到:http://forums.codeblocks.org/index.php/topic,13812.msg94824.html#msg94824 我提供了一个关于gcc 4.5.2的补丁以及构建gccsense Windows版本的步骤。 - ollydbg23

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接