4

X86_64-pc-gnu-linux (ubuntu 10.04) で emacs 23.1.1 を使用し、有名なリンクhttp://alexott.net/en/writings/emacs-devenv/EmacsCedet.htmlに従って、すべての構成を .emacs に追加します。しかし、それは基本的な仕事さえできません。セットアップまたは構成に問題があるに違いありません。

メンバー関数を表示させようとすると、見つけられません。[オートコンプリートは、clang をパーサーとして使用します。では、パーサーのセマンティックは何を使用するのでしょうか? ]

;; Load CEDET
(load-file "~/backup/cedet-trunk/common/cedet.el")
(global-ede-mode 1)                      
;(semantic-load-enable-code-helpers)       
(semantic-load-enable-excessive-code-helpers)
;(semantic-load-enable-semantic-debugging-helpers)
(global-srecode-minor-mode 1)            
(global-semantic-tag-folding-mode 1)
(require 'semantic-tag-folding)
(global-semantic-idle-scheduler-mode 1)
(global-semantic-idle-completions-mode 1)
(global-semantic-idle-summary-mode 1)
(global-semantic-idle-completions-mode)
(require 'semantic-ia)
(require 'eassist)
(require 'semantic-gcc)
(require 'semanticdb-global)
(semanticdb-enable-gnu-global-databases 'c-mode)
(semanticdb-enable-gnu-global-databases 'c++-mode)
(setq qt4-base-dir "/usr/include/qt4")
(setq qt4-gui-dir (concat qt4-base-dir "/QtGui"))
(setq qt4-core-dir (concat qt4-base-dir "/QtCore"))
(semantic-add-system-include qt4-base-dir 'c++-mode)
(semantic-add-system-include qt4-gui-dir 'c++-mode)
(semantic-add-system-include qt4-core-dir 'c++-mode)
(add-to-list 'auto-mode-alist (cons qt4-base-dir 'c++-mode))
(add-to-list 'semantic-lex-c-preprocessor-symbol-file (concat qt4-base-dir 
"/Qt/qconfig.h"))
(add-to-list 'semantic-lex-c-preprocessor-symbol-file (concat qt4-base-dir "/Qt/qconfig-large.h"))
(add-to-list 'semantic-lex-c-preprocessor-symbol-file (concat qt4-base-dir "/Qt/qglobal.h"))

(defun my-cedet-hook ()
 (local-set-key [(control return)] 'semantic-ia-complete-symbol-menu)
 (local-set-key "\C-c?" 'semantic-ia-complete-symbol)
 (local-set-key "\C-c>" 'semantic-complete-analyze-inline)
 (local-set-key "\C-c=" 'semantic-decoration-include-visit)
 (local-set-key "\C-cj" 'semantic-ia-fast-jump)
 (local-set-key "\C-cb" 'semantic-mrub-switch-tags)
 (local-set-key "\C-cd" 'semantic-ia-show-doc)
 (local-set-key "\C-cs" 'semantic-ia-show-summary)
 (local-set-key "\C-cp" 'semantic-analyze-proto-impl-toggle)
 (local-set-key "\C-cr" 'semantic-symref)
 (local-set-key "\C-c\-" 'senator-fold-tag)
 (local-set-key "\C-c\+" 'senator-unfold-tag)
 )

(add-hook 'c-mode-common-hook 'my-cedet-hook)
(add-hook 'lisp-mode-hook 'my-cedet-hook)
(add-hook 'emacs-lisp-mode-hook 'my-cedet-hook)

(ede-cpp-root-project "Test"
        :name "Test Project"
        :file "~/project/shared/test-qt-semantic.cpp"
        :include-path '("/"
               )
        :system-include-path '("/usr/include/qt4"
                   "/usr/include/qt4/Qt"
                   "/usr/include/qt4/QtGui"
                   "/usr/include/qt4/QtCore"
                   ))

これはソースファイルです:

#include <QApplication>
#include <QPushButton>
#include <QString>
int main (int argc, char ** argv)
{
QApplication app (argc, argv);
QPushButton hello ("Hello, World!");
hello.resize (100, 30);
hello.show ();
QString id("hi");
return app.exec ();
} 

「class QPushButton hello ()」のデータ型が見つかりません。
宣言された型: "class QPushButton {}"
生データ型: ("QPushButton" type (:type "class") nil nil)

Semantic は、どのグローバル テーブルにもこのデータ型を見つけることができませんでした。

セマンティックは、ローカル スコープまたはグローバル タイプキャッシュのいずれかを介してデータ型を検索します。

ローカル スコープ情報:
* スコープに対するタグ クラスの制約: (タイプ)
* 現在のスコープに既知の親はありません。
* 現在、スコープ内に既知のシンボルはありません。
* ローカルで宣言された既知のシンボルはありません。
セマンティックは、各バッファのタイプ キャッシュを作成して維持します。
型がグローバル型の場合、型キャッシュに表示されます。
タイプキャッシュを調べるには、次のように入力します。

Mx Semanticdb-typecache-dump RET [実行]

現在の typecache 統計:
0 型がこのファイルでグローバルに含まれています
。0 型が含まれています。

データ型が型キャッシュにない場合は、インクルード パスが正しくない可能性があります。

インクルード パスの概要:

このファイルのプロジェクト インクルード検索は、EDE オブジェクトによって処理されます。
Buffer Target: #ede-cpp-root-target /home/mike/project/shared/>
Buffer Project: #ede-cpp-root-project Test>
Backup Locator: # ede-locate-base Loc>

システム インクルード パスは次のとおりです。

/usr/include/qt4/
/usr/include/qt4/QtGui/ 
/usr/include/qt4/QtCore/
/usr/include/c++/4.4/
/usr/include/c++/4.4/x86_64-linux-gnu/
/usr/include/c++/4.4/backward/
/usr/local/include/
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/include-fixed/
/usr/include/

概要を含める: /home/mike/project/shared/test-qt-semantic.cpp

test-qt-semantic.cpp には 3 つのインクルードが含まれています。
不明な
インクルード: 0 未解析のインクルード: 0解析済みのインクルード
: 3
不明なインクルードはありません。

4

1 に答える 1

2

一番下には、次のように書かれています。

このアプローチは新しい CEDET では機能しないようです - 私は修正に取り組んでいます

そして、コメントで彼は次のように述べています。

CEDET が正しくコンパイルされていないようです。CVS から CEDET を取得し、指示に従ってコンパイルしてください。

したがって、コンパイルして再度ビルドする必要があると思いますが、動作するはずですが、試したことはありません。それが記事が言ったことだから、私はそれを提案するだけです。

于 2012-09-24T15:54:28.957 に答える