0

私はemacsを初めて使用し、コード補完にceditを使用しようとしました。http://alexott.net/en/writings/emacs-devenv/EmacsCedet.htmlに基づく簡単な設定を使用します

.emacs は次のようになります。

;; cedit
(semantic-mode 1)
(require 'semantic/ia)
(require 'semantic/bovine/gcc)
;;(require 'semantic/bovine/clang)
;;(semantic-clang-active)

(setq-mode-local c-mode semanticdb-find-default-throttle
                 '(project unloaded system recursive))

;;(semantic-idle-summary-mode )
;; if you want to enable support for gnu global
(semanticdb-enable-gnu-global-databases 'c-mode)
(semanticdb-enable-gnu-global-databases 'c++-mode)
;;(semantic-reset-system-include 'c-mode)
;;(semantic-reset-system-include 'c++-mode)
(defun my-c-mode-cedet-hook ()
 (local-set-key "." 'semantic-complete-self-insert)
 (local-set-key ">" 'semantic-complete-self-insert))
(add-hook 'c-mode-common-hook 'my-c-mode-cedet-hook)
(add-hook 'c++-mode-common-hook 'my-c-mode-cedet-hook)

(defun my-c-mode-cedet-hook ()
  (add-to-list 'ac-sources 'ac-source-gtags)
  (add-to-list 'ac-sources 'ac-source-semantic)
  (add-to-list 'ac-sources 'ac-source-semantic-raw))
(add-hook 'c-mode-common-hook 'my-c-mode-cedet-hook)


(global-ede-mode t)

この単純な C++ ファイルでテストした後:

#include <string>
#include <map>
#include <stdio.h>
#include <iostream>

using namespace std;

int main() {

  string s; 

  map<int,int>a;

}

インクルードやヘッダーファイルなどのキーワードを完了できることがわかりました.sのメソッドを完了しようとすると失敗します.そして、コマンドを使用すると、semantic-ia-complete-symbol 単に報告されますCannot find types for string s

なぜそれが機能しないのか、誰か教えてもらえますか? そしてどうもありがとう!

4

1 に答える 1

0

最新の Emacs にアップデートするだけです。そこで、あなたの例はゼロ設定で動作します。

emacs -Q test.cc

M-x semantic-modesemantic-ia-complete-symbol

于 2014-11-26T15:44:42.513 に答える