Как включить стандартную библиотеку jdk в семантику emacs?

Я использую Emacs 23.2. Вот как я загружаю семантику:

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

Поэтому, если я создаю простой файл Java и посещаю его, я получаю завершение кода для локально определенных методов и классов. Но я не могу понять, как сделать семантическую осведомленность о библиотеках JDK. Например, если я попробую semantic-ia-complete-symbol на строковую переменную, я получаю Cannot find types for 'String blah',

Кто-нибудь знает, как загрузить библиотеки jdk в semanticdb, чтобы было доступно завершение кода стандартных типов объектов, таких как String?

3 ответа

Начиная с CEDET 1.1, Semantic имеет поддержку для извлечения информации о классе через javap. Вам нужно настроить cedet-java-jdk-root переменная в JAVA_HOME, и заполнить semanticdb-javap-classpath переменная со списком путей к системным банкам Java, например rt.jar, так далее.

Есть статья (на русском языке, но вы можете получить перевод) о настройке Semantic для завершения Java - пожалуйста, посмотрите там для более подробной информации.

Если вы разархивируете src.zip, который находится в $JAVA_HOME, вы можете добавить хук для вашего режима java, например так:

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

Это решает проблему для меня с Emacs 23.3 и CEDET 1.1.

Я давно не пробовал CEDET, поэтому я слепо задам несколько вопросов, которые могут дать представление о вашей проблеме.

  1. Я полагаю, JDK на вашем пути, и Emacs может его найти?
  2. Поскольку JDK в основном представляет собой набор файлов JAR без исходного кода, может ли семантический анализ это сделать? Пример: если вы делаете свой собственный Class1.javaскомпилируйте это в Class1.class а затем удалить Class1.javaкогда пишешь Class2.java и ссылаться на некоторые методы из Class1может Semantic их найти?
  3. Вы пробовали JDEE?
Другие вопросы по тегам