2010-11-13 14 views
6

Estoy usando Emacs 23.2. He aquí cómo estoy cargando semántica:¿Cómo incluir la biblioteca jdk estándar en emacs semántica?

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

lo tanto, si se crea un archivo de Java simple y visito, me sale la finalización de código de métodos y clases definidas localmente. Pero no puedo entender cómo hacer que semántica conozca las bibliotecas jdk. Por ejemplo, si intento semantic-ia-complete-symbol en una variable String, obtengo Cannot find types for 'String blah'.

¿Alguien sabe cómo cargar las librerías jdk en semántica para que esté disponible el código de finalización de tipos de objetos estándar como String?

Respuesta

0

Hace tiempo que no pruebo CEDET, así que le haré algunas preguntas ciegamente que pueden dar una idea de su problema.

  1. Supongo que JDK está en su camino, y Emacs lo puede encontrar?
  2. Dado que JDK es básicamente un grupo de archivos jar sin código fuente, ¿puede analizar Semantic? Ejemplo: si crea su propio Class1.java, compílelo al Class1.class y luego borre Class1.java, cuando escriba Class2.java y haga referencia a algunos métodos del Class1, ¿puede encontrarlos Semántica?
  3. ¿Has probado JDEE?
+0

Sí, jdk está en mi camino. Encontré src.jar dentro del os x jdk e incluso intenté extraer y visitar String.java. Parece que semántica analiza String.java en semántica, pero cuando estoy de regreso dentro de mi proyecto personalizado de Java, parece que no puede encontrar métodos para Strings. Miré a JDEE, pero mi objetivo aquí es comprender primero la semántica antes de agregar más complejidad. Creo que es principalmente mi ignorancia de cómo funciona la semántica, así que seguiré cavando, ¡pero gracias por tu respuesta! – Upgradingdave

1

Si descomprimir src.zip que se encuentra en $ JAVA_HOME se puede añadir un gancho para que el modo de java como esto:

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

que resuelve el problema para mí con Emacs 23.3 y 1.1 CEDET.

3

Comenzando con CEDET 1.1, Semantic tiene soporte para recuperar información de clase a través de javap. Necesita configurar cedet-java-jdk-root variable JAVA_HOME, y rellenar semanticdb-javap-classpath variables con la lista de rutas de acceso a los tarros del sistema de Java, como rt.jar, etc.

Hay an article (en ruso, pero se puede obtener translation) acerca de la configuración semántica para Java finalización - mire allí para más detalles.

Cuestiones relacionadas