Как включить стандартную библиотеку jdk в семантику emacs? - PullRequest
6 голосов
/ 13 ноября 2010

Я использую 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 для переменной String, я получаю Cannot find types for 'String blah'.

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

Ответы [ 3 ]

3 голосов
/ 09 мая 2012

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

1 голос
/ 08 мая 2012

Если вы распакуете 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.

0 голосов
/ 16 ноября 2010

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

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