2010-10-20 4 views
8

Ich habe Setup Emacs 23.1.50.1 mit cedet 1.0 und EZB 2,40 (stark inspiriert von Alex Otts Setup auf http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el und seine sanfte Einführung in cedet (http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html) dank Alex). Es funktioniert ganz gut, aber ich brauche mehr Verständnis dafür, wie Code-Vervollständigung und Symbol-Referenzen gehandhabt werden, wenn man mit mehreren Projekten arbeitet.Emacs/CEDET. Mehrere Projekte und Code-Vervollständigung

Ich habe ein einfaches ede Projekt wie diese erstellt:

(ede-cpp-root-project "test" 
         :file "~/src/sw/anchor" 
         :include-path '("/Common") 
         :system-include-path '("~/include")) 

Wenn dieses Projekt geladen wird, wird nur für Fertigstellungen in den verschiedenen Verzeichnissen in den Projektkonfigurationen angegeben aussehen Semantic?

Ich folgte http://mmmyddd.freeshell.net/blog/Computer/Emacs/usecscopesemanticdbbackend, um cscope als Backend für semanticdb zu verwenden. Ich kann semanticdb-enable-cscope-in-buffer ausführen, ohne dass emacs irgendwelche Fehler wirft, aber ich habe keine Ahnung, ob semantic meine Datenbank benutzt. Kann ich in meiner Projektdefinition auch einen Verweis auf ein cscope.out hinzufügen, um besser steuern zu können, welche Dateien im aktuellen Kontext nach Referenzen suchen?

Ein paar Merkwürdigkeiten:

Wenn ich versuche, eine neue Quelldatei ich den Fehler zu öffnen „gelten: für die Programmsuche: keine solche Datei oder das Verzeichnis, global“ und nichts passiert. Wenn ich versuche, es wieder zu öffnen, ist alles in Ordnung.

Wenn ich versuche, ein Projekt zu laden, indem Sie an der Anker-Datei verweist, erhalte ich diese Fehlermeldung: „wenn: Falscher Typ Argument: class-p, ede-CPP-root“

+0

Für den "apply: Suche nach Programm: keine solche Datei oder Verzeichnis, globale" Fehler, haben Sie den Teil von Alex Ott Setup, die verwendet "(semanticdb-enable-gnu-global-databases ...)" kopiert? – Dingo

+0

Das habe ich getan, aber ich vermute, dass ich es nicht brauche. Die Tatsache, dass es "gnu global support" heißt, hätte meinen Verdächtigen das Problem machen lassen sollen war da :). Vielen Dank. – anr78

Antwort

5

Wenn Sie Fehler erhalten in Ihrem Konfiguration, die beste Sache zu tun ist:

und erhalten Sie die Stack-Trace, die auf den Problembereich zeigen wird. Oft ist dies hilfreich bei der Identifizierung des Konfigurationsproblems.

CEDET versucht, jede Datei mit einem einzelnen Projekt zu verknüpfen, und alle Befehle, die in diesem Puffer ausgeführt werden, sind auf die Grenzen des Projekts beschränkt. Für die CScope-Unterstützung wird auch EDE verwendet, um das Stammverzeichnis zu identifizieren, und es wird dabei helfen, die Datei cscope.out zu finden, die sowohl mit den Vervollständigungs- als auch mit den Referenzwerkzeugen in Verbindung steht.

Die Ausnahme ist natürlich der System-Include-Pfad, der normalerweise/usr/include oder was auch immer ist. Dies ist eine Erweiterung des Standardsystem-Include-Pfades, der mit der GCC-Unterstützung berechnet wird. In einem Ihrer C-Dateien können Sie tun:

M-x semantic-c-describe-environment RET 

und das zeigen sollte, was Semantic wird zu verwenden versuchen.

Um überprüfen, ob CScope für Code-Vervollständigung verwendet werden, können Sie mit überprüfen:

M-x semanticdb-find-test-translate-path RET 

und prüfen Sie das Ende der Liste für einige CScope Sache.

+0

Danke Eric, sowohl für die Antwort als auch für die Software. Diese Befehle sind in der Tat sehr nützlich.Momentan sagt semantic-c-describe-environment nichts über cscope, und semanticdb-find-test-translate-path sagt: * # anr78

+0

Richtig, das cscope Der Support kümmert sich nicht darum, die Anzahl der Tags zu berechnen, die CScope kennt, und es ist nicht wirklich Teil des "Projekts", da die Interna abstrahiert sind, so dass die C-Umgebung nichts davon weiß. – Eric