Ich habe Emacs 24.2.50 auf eine neue Linux-Host neu installiert und gestartet Konfiguration eine neue dotEmacs Config basierend auf magnars Emacs. Da ich CEDET in meinem vorherigen Workflow erfolgreich eingesetzt habe, habe ich mit der Konfiguration begonnen. Es gibt jedoch ein seltsames Verhalten, wenn ich eine C++ - Quelldatei lade.Seltsam semantischer Fehler
[Dieser Teil gelöst]
Wie erwartet, alle semantische Parsen enthaltenen Dateien (und bei der Ersteinrichtung parsen alle vom angegebenen Dateien semantisch-Add-System-umfassen Variablen), aber er druckt diese eine Fehlermeldung, die wie folgt lautet:
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'.
im obigen Beispiel wird der Fehler für die STL-Vektor gedruckt, sondern eine entsprechende Fehlermeldung für jede Datei durch einen eingeschlossen gedruckt ich besuche und alle späteren beinhaltet. Als Folge dauert es ziemlich lange, bis der Vorgang abgeschlossen ist. Leider wird der Vorgang wiederholt. Ich öffne einen neuen Puffer.
[Dieses Problem ist gelöst Too]
Außerdem sieht es aus wie das Parsen nicht wirklich arbeiten, wie wenn ich den Punkt über einem nicht-c Urtyp platzieren (dh nicht int, double, float, etc.) statt der Definition des Typs Druck in der mode~~POS=TRUNC eine Fehlermeldung wie
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))"
wo DEPFETResolutionAnalysis.cc die Datei & Puffer ich zur Zeit der Bearbeitung und IndexMap und fXBetween sind Typen in Dateien, die von der Datei enthalten definiert Ich bin der Bearbeitung/einiger Datei durch die Datei enthalten I Bearbeitung bin.
Ich habe keine weiteren Funktionen von cedet getestet/semantischen wie das Problem ziemlich ärgerlich. Meine cedet Konfiguration kann here gefunden werden.
EDIT: Mit Hilfe von Alex Ott habe ich das erste Problem irgendwie gelöst. Es war wegen meiner schrecklichen cedet Initialisierung. Sehen Sie seine erste Antwort für die richtige Konfiguration von CEDET!
Es bleibt immer noch das Problem mit dem Idle Service Error
(die, wenn sie global-semantic-idle-local-symbol-highlight-mode
ermöglicht, dauerhaft, nicht nur dann auftritt, wenn die Definition des Typs an Punkt-Kontrolle).
Und es gibt die neue Problem, wie zu deaktivieren Sie die Site-weise Init-Datei (en).
EDIT2: Ich habe semantic-debug-idle-function
in einem Puffer ausgeführt, in dem das Problem auftritt und es produziert ~ 700kb [sic!] Ausgabe. Es sieht so aus, als würde es einige Operationen an einem Datencontainer ausführen, der, wie es aussieht, Informationen über alle Symbole enthält, die in den analysierten Dateien definiert sind. Da ich ein ziemlich großes Paket (~ 20Mb Quelldateien) geparst habe, ist diese Tabelle ziemlich groß. Kann Semantik eine Datenbank so groß handhaben oder ist das unmöglich und der Grund meines Problems?
EDIT3: Löschen des Inhalts von ~/.semanticdb
und Reparieren alle umfasst den Trick.Ich muss immer noch die siteweisen Init-Dateien deaktivieren, aber da dies nicht mit CEDET zu tun hat, werde ich diese Frage schließen (die Frage bezüglich der siteweisen Init-Dateien kann here gefunden werden).
Bitte geben Sie Informationen darüber, welche Version von cedet Sie verwenden, etc. Bitte auch tragen Konto, dass Sie die Zeilen 2-40 nicht in den Haken legen müssen. Diese Aufgabe (Laden von CEDET) sollte nur einmal ausgeführt werden, nicht beim Öffnen jeder C/C++ Datei. Siehe https://gist.github.com/3930120 als Beispiel für die CEDET-Konfiguration –
Es gibt auch andere Fehler in Ihrem init - wenn Sie 'c-mode-common-hook' verwenden, dann wird es für C aufgerufen, C++ usw., so dass es nicht notwendig ist, es für C & C++ - Modi separat einzustellen. –