Java開発用のEmacs構成を機能させようとしています。それはかなり良いです - 私は malabar-mode が動作し、タグブラウジングのために GNU Global が動作しています。私がうまくいかないことの1つは、セマンティックDBにgnu globalを適切に使用させることです。私のインポートが見つかりません。
まず、これはすべてのソースが最上位のルート プロジェクト フォルダーからチェックアウトされた Maven マルチモジュール プロジェクトです。他のすべてのプロジェクトは、ディレクトリ ツリーでこのプロジェクトの下にあります。このルート フォルダーには、すべてをカバーする単一の GTAGS データベースがあります。
機能するもの:
M-x gtags-find-tag RET symbol RET
正常に動作するため、データベースは良好であり、グローバルで見つけることができます。M-x cedet-gnu-global-version-check
動作し、私のバージョンが良好であると報告します。M-x cedet-gnu-global-expand-filename
作品M-x semanticdb-find-test-translate-path
Java バッファにある場合の「GNU グローバル検索テーブル」を示します- JDK ソース フォルダーをシステム インクルード フォルダーとして設定しているため、コア Java インポートは適切に解析されます。
私のJava設定は次のとおりです(cedeの初期化はファイルの前にあります):
(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)))