diff options
| author | venomade <venomade@venomade.com> | 2026-01-18 16:07:54 +0000 |
|---|---|---|
| committer | venomade <venomade@venomade.com> | 2026-01-18 16:07:54 +0000 |
| commit | 8d688d1107c46b6dfdcaf02fa5c9c4c8a4640e65 (patch) | |
| tree | 76edfeb78094eb8491b1f32a2acd45b6ba95ffa2 /.emacs.d/lang/java.el | |
| parent | edcf5dd381c26274a939f4e703539b15c0058e99 (diff) | |
KDE & Emacs
Diffstat (limited to '.emacs.d/lang/java.el')
| -rw-r--r-- | .emacs.d/lang/java.el | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/.emacs.d/lang/java.el b/.emacs.d/lang/java.el new file mode 100644 index 0000000..5d41a0c --- /dev/null +++ b/.emacs.d/lang/java.el @@ -0,0 +1,38 @@ +;; Emacs Configuration for Java + +; JDT URI fix for JDTLS from https://www.reddit.com/r/emacs/comments/1ibkh2h/comment/m9slw00/ +(with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs + `((java-mode java-ts-mode) . + ("jdtls" + :initializationOptions + (:extendedClientCapabilities (:classFileContentsSupport t)))))) + +(defun jdt-file-name-handler (operation &rest args) + "Support Eclipse jdtls `jdt://' uri scheme." + (let* ((uri (car args)) + (cache-dir "/tmp/.eglot") + (source-file + (expand-file-name + (file-name-concat + cache-dir + (save-match-data + (when (string-match "jdt://contents/\\(.*?\\)/\\(.*\\)\.class\\?" uri) + (format "%s.java" (replace-regexp-in-string "/" "." (match-string 2 uri) t t)))))))) + (unless (file-readable-p source-file) + (let ((content (jsonrpc-request (eglot-current-server) :java/classFileContents (list :uri uri))) + (metadata-file (format "%s.%s.metadata" + (file-name-directory source-file) + (file-name-base source-file)))) + (unless (file-directory-p cache-dir) (make-directory cache-dir t)) + (with-temp-file source-file (insert content)) + (with-temp-file metadata-file (insert uri)))) + source-file)) +(add-to-list 'file-name-handler-alist '("\\`jdt://" . jdt-file-name-handler)) + +(add-hook 'java-mode-hook #'eglot-ensure t) + +(load-file + (expand-file-name + "pkg/consult-jdt.el" + user-emacs-directory)) |
