2010-11-13 17 views
6

Sto usando Emacs 23.2. Ecco come sto caricando semantica:Come includere la libreria jdk standard in emacs semantica?

(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) 

Quindi, se creo un file java semplice e visitare, ottengo il completamento del codice per i metodi e le classi definite a livello locale. Ma non riesco a capire come rendere consapevole la semantica delle librerie jdk. Ad esempio, se provo semantic-ia-complete-symbol su una variabile String, ottengo Cannot find types for 'String blah'.

Qualcuno sa come caricare le librerie jdk in semanticdb in modo che il completamento del codice di tipi di oggetti standard come String siano disponibili?

risposta

0

Non ho provato CEDET per un po ', quindi chiederò ciecamente alcune domande che potrebbero dare un'idea del tuo problema.

  1. Suppongo che JDK sia sul tuo percorso ed Emacs possa trovarlo?
  2. Dal momento che JDK è fondamentalmente un gruppo di file jar senza codice sorgente, è possibile che Semantic lo analizzi? Esempio: se si crea il proprio Class1.java, compilarlo a Class1.class e quindi eliminare Class1.java, quando si scrive Class2.java e si fa riferimento ad alcuni metodi da Class1, è possibile trovarli da Semantic?
  3. Hai provato JDEE?
+0

Sì, jdk è sul mio percorso. Ho trovato src.jar all'interno di os x jdk e ho perfino provato a estrarre e visitare String.java. Sembra semantica che analizza String.java in semanticdb, ma quando torno nel mio progetto java personalizzato, non riesco a trovare metodi per le stringhe. Ho guardato JDEE, ma il mio obiettivo qui è capire la semantica prima di aggiungere più complessità. Penso che sia soprattutto la mia ignoranza su come funziona la semantica, quindi continuerò a scavare, ma grazie per la tua risposta! – Upgradingdave

1

Se si decomprime src.zip che si trova in $ JAVA_HOME è possibile aggiungere un gancio per voi modalità Java in questo modo:

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

Risolve il problema per me con Emacs 23.3 e CEDET 1.1.

3

A partire da CEDET 1.1, Semantic supporta il recupero delle informazioni sulla classe tramite javap. È necessario attivare cedet-java-jdk-root variabile JAVA_HOME, e popolare semanticdb-javap-classpath variabile elenco di percorsi di vasi di sistema di Java, come rt.jar, ecc

C'è an article (in russo, ma è possibile ottenere translation) sulla configurazione semantica per Java completamento - si prega di guardare lì per ulteriori dettagli.

Problemi correlati