6


1

Emacs、ベクトル用のC ++コード補完

私はEmacsを初めて使いますが、サンプルとして次のコードがあります。 GNU Emacs 23.1.1(i386-mingw-nt6.1.7600)をインストールし、http://cedet.sourceforge.net/ [ cedet-1.0pre7.tar.gz。]、インストール済みのhttp://tromey.com/elpa/[ELPA]、およびhttp://nschum.de/src/emacs/company-mode/[company]。 私の簡単なEmacs設定は一番下にあります。

問題は、* main() q [0] と入力して(ドット)を押すと、 first_name last_name Person ではなく、ベクターの37のメンバーが表示されることです。期待した。 補完は関数 greet()*で期待どおりに機能しますが、ベクトルとは関係ありません。

私の質問は、ベクター要素のコード補完をどのように達成できますか?

#include
#include
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 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 Answer


7


これは、セマンティックアナライザーの既知の問題です。 私は現在、gcc STLで使用されているhttp://www.cprogramming.com/tutorial/template_specialization.html[Template Specialization]に対処できません(問題はallocator.hのこのような専門化に起因しています)。 これはメーリングリストで議論されています:


3


http://cx4a.org/software/gccsense/ [GCCSense]

EmacsでのC ++コードの完成の例:

image:https://i.stack.imgur.com/pFlte.png [emacs gccsenseスクリーンショット]