Настройка Emacs 23.4, CEDET 1.1 и SemanticDB для использования GNU Global в Windows

Я пытался заставить мою конфигурацию Emacs для Java-разработки работать. Это довольно хорошо - у меня работает режим malabar, и GNU Global работает для просмотра тегов. Единственное, что я не могу заставить работать, это заставить semanticdb правильно использовать gnu global. Ни один из моих импортов не найден.

Во-первых, это многомодульный проект Maven, в котором все исходные коды извлечены из корневой папки проекта верхнего уровня. Все остальные проекты находятся ниже этого в дереве каталогов. В этой корневой папке есть единая база данных GTAGS, охватывающая все.

Вещи, которые работают:

  • M-x gtags-find-tag символ RET RETработает нормально, так что база данных в порядке, и ее можно найти по всему миру.
  • M-x cedet-gnu-global-version-checkработает и сообщает, что моя версия хороша.
  • Mx cedet-gnu-global-expand-filenameработает
  • Mx semanticdb-find-test-translate-pathпоказывает «Таблицу глобального поиска GNU» в буфере Java
  • I установите исходную папку JDK в качестве системной папки включения, чтобы основные импорты Java анализировались правильно.

Моя конфигурация java выглядит следующим образом (инициализация cedet находится в файле ранее):

(add-local-load-path "malabar/lisp")

(require 'malabar-mode)
(setq malabar-groovy-lib-dir (concat emacs-local-site-lisp "malabar/lib"))
(add-to-list 'auto-mode-alist '("\\.java\\'" . malabar-mode))

;; enable semanticdb support for gnu global
(when (cedet-gnu-global-version-check t)
  (semanticdb-enable-gnu-global-databases 'java-mode))

(add-hook 'java-mode-hook
    (lambda ()
    (gtags-mode 1)))

(add-hook 'java-mode-hook 'flymake-mode-on)

(defun my-java-flymake-init ()
  (list "javac" (list (flymake-init-create-temp-buffer-copy
                   'flymake-create-temp-with-folder-structure))))

(add-to-list 'flymake-allowed-file-name-masks
         '("\\.java$" my-java-flymake-init flymake-simple-cleanup))

(add-hook 'java-mode-hook
      '(lambda ()
         (semantic-add-system-include (getenv "JAVA_HOME") 'java-mode)))
5
задан DuckPuppy 16 May 2012 в 19:26
поделиться