From: <nat...@hu...> - 2007-02-02 20:52:49
|
Folks, The problem is that when I have a .cpp file open, ECB displays all methods in the methods buffer as public. When I have the header file for the same class open, ECB displays the methods correctly. When the cursor rests on a method in a .cpp file, the symboldef buffer shows the prototype correctly from the header file. This suggests IMenu and/or Semantic are working OK, but ECB has a problem. Here's an example with details: ECB IDs the class as a "struct" when focus is in the class's .cpp file. When I'm working in the .h file, the same class is labeled as a "class." E.g. for a cpp file: [+] Variables [-] sub1class1:struct | +sub1class1 (controlService):sub1class1 // (constructor) | +~sub1class1 (void):void | +aPrivateMethod (void):void | +aPublicMethod (void):void | +aProtectedMethod (void):void | +aVirtualProtectedMethod (void):void | .... for the matching .h file: [-] sub1class1:class | [+] Attributes | [+] Parents | +sub1class1 (controlService):sub1class1 // constructor | +~sub1class1 (void):void // destructor | -aPrivateMethod (void):void | +aPublicMethod (void):void | #aProtectedMethod (void):void | #aVirtualProtectedMethod (void):void | .... I have the following set-up: [-] ProjectDir | [-] subdir1 | | [x] includeFilesDir | | | sub1class1.h | | | sub1class2.h | | | sub1Other.h | | `- .... | | [x] sourceFilesDir | | | sub1class1.cpp | | | sub1class2.cpp | | `- .... | `- .... | [-] subdir2 | | [+] includeFilesDir | | | sub2class1.h | | `- .... | | [+] sourceFilesDir | | | sub2class1.cpp | | `- .... | `- .... | [+] subdir3 | [+] ... `- .... I have semanticdb-project-roots set for `ProjectDir' On related notes nothing I've been able to configure has led to me being able to distinguish prototypes from functions (methods) when I do show both in the methods list. I've found nothing useful in the documentation, except the comment that the project should be "well set up." One of the ECB/CEDET/IMenu entities displays the tag properties in the echo area (minibuffer) after the point sits on a tag briefly. This display is correct for the .cpp files. I was getting the following error in *Messages* for both .cpp & .h files: semantic-dependency-tag-file: idle error: "# - Symbol's function definition is void: semantic-dependency-find-file-on-path" I seem to have corrected this error by adding (setq-mode-local c-mode semantic-dependency-include-path (quote ("../include" "../inc"))) (load-file "c:/Progra~1/gnu/emacs-21.3/site-lisp/cedet/semantic/semantic-dep.elc") to my .emacs file. pertinent .emacs entries for ECB: '(c-mode-common-hook (quote (ecb-activate semantic-default-c-setup activate-ifdef-mode))) '(ecb-analyse-show-node-info (quote (shift-click . full-info))) '(ecb-auto-activate t) '(ecb-methods-show-node-info (quote (shift-click . name+type))) '(ecb-options-version "2.33beta1") '(ecb-show-only-positioned-tags nil) '(ecb-show-tags (quote ((default (include collapsed nil) (parent collapsed nil) (type flattened nil) (variable collapsed name) (function expanded nil) (label hidden nil) (t collapsed nil)) (c++-mode (include collapsed nil) (variable collapsed name) (parent collapsed name) (type flattened name) (function flattened name) (function collapsed name) (label hidden nil) (t expanded name) (t flattened name)) (c-mode (include collapsed nil) (parent collapsed nil) (type collapsed name) (variable collapsed name) (function flattened name) (function expanded name) (label hidden nil) (t collapsed nil)) (bovine-grammar-mode (keyword collapsed name) (token collapsed name) (nonterminal flattened name) (rule flattened name) (t collapsed nil)) (wisent-grammar-mode (keyword collapsed name) (token collapsed name) (nonterminal flattened name) (rule flattened name) (t collapsed nil)) (texinfo-mode (section flattened nil) (def collapsed name) (t collapsed nil)) ))) '(ecb-symboldef-find-backends (quote (semanticdb imenu))) '(ecb-symboldef-find-functions (quote ( (lisp-interaction-mode . ecb-symboldef-find-lisp-doc) (lisp-mode . ecb-symboldef-find-lisp-doc) (emacs-lisp-mode . ecb-symboldef-find-lisp-doc) (c-mode . ecb-symboldef-find-definition) (c++-mode . ecb-symboldef-find-definition) (default . ecb-symboldef-find-definition)))) '(ecb-tag-display-function (quote ((default . ecb-format-tag-uml-concise-prototype)))) '(ecb-tree-truncate-lines (quote (ecb-directories-buffer-name ecb-sources-buffer-name ecb-history-buffer-name ecb-analyse-buffer-name ecb-methods-buffer-name))) '(ecb-type-tag-expansion (quote ( (default "class" "interface" "group" "namespace") (c++-mode . all-specifiers) (c-mode . all-specifiers)))) '(ediff-quit-hook (quote (ediff-cleanup-mess ecb-ediff-quit-hook)) t) pertinent .emacs entries for Semantic: (semantic-load-enable-excessive-code-helpers) (setq-mode-local c-mode semantic-dependency-include-path (quote ("../include" "../inc"))) (global-semanticdb-minor-mode 1) (global-semantic-show-unmatched-syntax-mode -1) '(c-mode-common-hook (quote (ecb-activate semantic-default-c-setup activate-ifdef-mode))) '(c-mode-hook (quote (semantic-default-c-setup))) '(global-semantic-idle-scheduler-mode t nil (semantic-idle)) '(global-semantic-idle-summary-mode t nil (semantic-idle)) '(global-semantic-stickyfunc-mode t nil (semantic-util-modes)) '(semantic-analyze-summary-function (quote semantic-format-tag-uml-prototype)) '(semantic-default-c-path (quote ("..\\include" "..\\inc"))) '(semantic-idle-scheduler-idle-time 1) '(semantic-idle-scheduler-verbose-flag nil) '(semantic-idle-summary-function (quote semantic-format-tag-uml-prototype)) '(semantic-imenu-auto-rebuild-directory-indexes t) '(semantic-imenu-index-directory t) '(semantic-imenu-sort-bucket-function (quote semantic-sort-tags-by-name-increasing-ci)) '(semantic-imenu-summary-function (quote semantic-format-tag-uml-prototype)) '(semantic-uml-colon-string ":") '(semanticdb-find-default-throttle (quote (project system recursive local))) '(semanticdb-global-mode t nil (semanticdb)) '(semanticdb-project-roots (quote ("z:/codebase/project/src"))) Any thoughts about what I'm missing? Otherwise, the ECB/CEDET toolset does a pretty darn good job of cross-referencing tags. Thanks, Nate |