2010-11-13 6 views
6

Ich benutze Emacs 23.2. Hier ist, wie ich lade semantischen:Wie Standard-JDK-Bibliothek in Emacs Semantik enthalten?

(setq semantic-default-submodes '(global-semantic-idle-scheduler-mode 
        global-semanticdb-minor-mode 
        global-semantic-idle-summary-mode 
        global-semantic-mru-bookmark-mode)) 
(semantic-mode 1) 

Also, wenn ich eine einfache Java-Datei erstellen und besuchen Sie es, ich Code-Vervollständigung erhalten für lokal definierten Methoden und Klassen. Aber ich kann nicht herausfinden, wie man semantisch auf jdk-Bibliotheken aufmerksam macht. Wenn ich zum Beispiel semantic-ia-complete-symbol für eine String-Variable versuche, bekomme ich Cannot find types for 'String blah'.

Wer weiß, wie die JDK-Bibliotheken in wie String semanticdb so Code-Vervollständigung von Standard-Objekttypen laden, stehen zur Verfügung?

Antwort

0

Haben nicht cedet in eine Zeit lang versucht, also werde ich fragen blind ein paar Fragen, die Einblick in Ihr Problem geben könnte.

  1. Ich gehe davon aus JDK auf dem Weg ist, und Emacs es finden kann?
  2. Da JDK im Grunde ein Bündel von JAR-Dateien ohne Quellcode ist, kann die semantischen analysieren? Beispiel: Wenn Sie Ihre eigenen Class1.java, kompilieren Sie es zu Class1.class und löschen Sie dann Class1.java, wenn Sie Class2.java schreiben und einige Methoden von Class1 beziehen, kann Semantic sie finden?
  3. Haben Sie versucht JDEE?
+0

Ja, jdk auf meinem Weg. Ich habe src.jar im os x jdk gefunden und sogar versucht String.java zu extrahieren und zu besuchen. Es scheint, dass semantische Syntax String.java in semanticdb analysiert, aber wenn ich mich wieder in meinem benutzerdefinierten Java-Projekt befinde, kann es anscheinend keine Methoden für Strings finden. Ich habe mir JDEE angeschaut, aber mein Ziel ist es, zuerst die Semantik zu verstehen, bevor ich mehr Komplexität hinzufüge. Ich denke, es ist hauptsächlich meine Unkenntnis, wie Semantik funktioniert, also werde ich weiter graben, aber danke für deine Antwort! – Upgradingdave

1

Wenn Sie src.zip entpacken, das in $ JAVA_HOME gefunden ist, können Sie einen Haken für Sie Java-Modus wie folgt hinzu:

(add-hook 'java-mode-hook 
    '(lambda() 
    (semantic-add-system-include (getenv "JAVA_HOME") 'java-mode))) 

Sie löst das Problem für mich mit Emacs 23.3 und cedet 1.1.

3

Beginnend mit cedet 1.1, hat Semantic Unterstützung Klasseninformationen durch javap zum Abrufen. Sie müssen Setup cedet-java-jdk-root Variable JAVA_HOME und semanticdb-javap-classpath Variable Liste von Pfaden zu Java System Gläser füllen, wie rt.jar usw.

Es an article (in russischer Sprache, aber man kann translation bekommen) etwa für Java Semantic up Einstellung Fertigstellung - bitte sehen Sie dort nach mehr Details.