新しいLinuxホストにemacs24.2.50を再インストールし、 magnarsemacs構成に基づいて新しいdotEmacs構成を開始しました。以前のワークフローでCEDETを使用してある程度の成功を収めたので、CEDETの構成を開始しました。ただし、C++ソースファイルをロードするたびに奇妙な動作が発生します。
[この部分は解決されました]
予想どおり、セマンティックはすべてのインクルードファイルを解析します(初期セットアップ中にセマンティック追加システムインクルード変数で指定されたすべてのファイルを解析します)が、次のようなエラーメッセージが出力 されます。
WARNING: semantic-find-file-noselect called for /usr/include/c++/4.7/vector while in set-auto-mode for /usr/include/c++/4.7/vector. You should call the responsible function into 'mode-local-init-hook'.
上記の例では、エラーはSTLベクトルに対して出力されますが、対応するエラーメッセージは、アクセスしているファイルおよび後続のインクルードに含まれるすべてのファイルに対して出力されます。その結果、終了するのにかなり長い時間がかかり、残念ながら、新しいバッファを開くタイプがあれば、このプロセスが繰り返されます。
[この問題も解決
されました]さらに、タイプの定義を次のようなエラーメッセージをモデレートします
Idle Service Error semantic-idle-local-symbol-highlight-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, (((0) \"IndexMap\"))"
Idle Service Error semantic-idle-summary-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, ((\"fXBetween\" 0 nil nil))"
ここで、DEPFETResolutionAnalysis.ccは現在編集中のファイルとバッファーであり、IndexMapとfXBetweenは、編集中のファイルに含まれるファイル/編集中のファイルに含まれるファイルで定義されるタイプです。
問題はかなり厄介なので、CEDET/セマンティックのこれ以上の機能はテストしていません。私のセデット設定はここにあります。
編集:アレックスオットの助けを借りて、私はちょっと最初の問題を解決しました。それは私の恐ろしいセデットの初期化によるものでした。CEDETを構成する適切な方法については、彼の最初の回答を参照してください。(有効にすると、ポイントで型の定義をチェックするときだけでなく、永続的に発生します)
にはまだ問題が残っています。
そして、サイトごとの初期化ファイルを無効にする方法の新しい問題があります。 Idle Service Error
global-semantic-idle-local-symbol-highlight-mode
EDIT2:semantic-debug-idle-function
問題が発生したバッファで実行しましたが、約700kb [sic!]の出力が生成されます。データコンテナに対していくつかの操作を実行しているように見えます。データコンテナの外観からは、解析されたファイルで定義されているすべてのシンボルに関する情報が含まれています。かなり大きなパッケージ(〜20Mbのソースファイル)を解析したので、このテーブルはかなり大きいです。セマンティックはこれほど大きなデータベースを処理できますか、それともこれは不可能であり、私の問題の理由ですか?
EDIT3:すべてのインクルードのコンテンツを削除して再解析することでうまくいきまし~/.semanticdb
た。サイトごとのinitファイルを無効にする必要がありますが、これはCEDETに関連していないため、この質問を閉じます(サイトごとのinitファイルに関連する質問はここにあります)。