Tôi đã cố gắng lấy cấu hình Emacs để phát triển Java. Nó khá tốt - Tôi đã nhận được chế độ malabar làm việc và có GNU Global làm việc để duyệt thẻ. Một điều tôi không thể làm việc là nhận semanticdb để sử dụng gnu toàn cầu đúng cách. Không tìm thấy hàng nhập khẩu nào của tôi.Thiết lập Emacs 23.4, CEDET 1.1 và SemanticDB để sử dụng GNU Global trên Windows
Đầu tiên, đây là dự án đa mô-đun Maven với tất cả các nguồn được kiểm tra từ thư mục dự án gốc cấp cao nhất. Tất cả các dự án khác nằm dưới cái này trong cây thư mục. Có một cơ sở dữ liệu GTAGS duy nhất trong thư mục gốc này bao gồm mọi thứ.
Những điều mà làm việc:
M-x gtags-find-tag RET symbol RET
hoạt động tốt, vì vậy cơ sở dữ liệu là tốt và toàn cầu có thể tìm thấy nó.M-x cedet-gnu-global-version-check
hoạt động và báo cáo rằng phiên bản của tôi là tốt.M-x cedet-gnu-global-expand-filename
làm việcM-x semanticdb-find-test-translate-path
cho thấy một "GNU Global Search Bảng" khi trong một bộ đệm Java- Tôi có thư mục nguồn JDK thiết lập như là một hệ thống bao gồm thư mục, Java nhập khẩu nên cốt lõi được phân tích cú pháp đúng.
java cấu hình của tôi là như sau (Cedet khởi là trước đó trong tập tin):
(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)))
Vui lòng tìm vào [câu trả lời cho câu hỏi tương tự] tôi [1] - nó mô tả làm thế nào để sử dụng javap + Semantic [1]: http://stackoverflow.com/questions/4173737/how- to-include-standard-jdk-library-in-emacs-semantic/10510736 # 10510736 –
Cảm ơn, nhưng tôi đã thấy điều đó và thiết lập điều đó. Vấn đề là Semantic không biết các tệp nguồn khác ở đâu. Vì nó nằm trong một submodule Maven lồng nhau nên các tệp nguồn sẽ nằm trong thư mục của một số dự án khác.Nếu tôi chưa xây dựng dự án đó, thậm chí sẽ không có bất kỳ tệp lớp nào cho javap để xử lý. Trong một số trường hợp, các tệp lớp nằm trong một cái lọ ở đâu đó trong kho lưu trữ maven cục bộ của tôi. Sử dụng cơ sở dữ liệu GNU Global ít nhất sẽ cho phép SemanticDB tìm và phân tích cú pháp các tệp không xác định từ các dự án mô-đun con khác bằng cách sử dụng cơ sở dữ liệu thẻ. – DuckPuppy
Hãy thử phiên bản mới nhất của CEDET (từ bzr) - nó đã được mở rộng để làm việc với Maven, cộng với một số sửa lỗi liên quan đến Java, do đó bạn sẽ hoàn thành tên cho thư viện của bên thứ ba –