feat: Java support with Nix
This commit is contained in:
parent
b57142a575
commit
ead0e33cc8
30
config.org
30
config.org
|
@ -992,7 +992,7 @@ emacs-lisp
|
|||
;;hy
|
||||
idris
|
||||
;;json
|
||||
;;(java +lsp)
|
||||
(java +lsp +tree-sitter)
|
||||
;;javascript
|
||||
;;julia
|
||||
;;kotlin
|
||||
|
@ -3928,6 +3928,34 @@ Operators being in italics looks ugly in this mode too, but unfortunately due to
|
|||
`(idris-semantic-postulate-face :foreground ,(doom-color 'yellow))))
|
||||
#+end_src
|
||||
|
||||
** Java
|
||||
|
||||
The =lsp-java= package provides LSP support using the standard language server, the Eclipse-based ~jdtls~. Unfortunately, this package isn't designed for Nix, so it fails to find the server script in our Nix store. We need to do a bit of legwork to patch in this support, as well as some extra considerations, such as per-project config directories.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun +lsp-java-server-store-path ()
|
||||
"Return the Nix store derivation path to the Java language server."
|
||||
(string-remove-suffix
|
||||
(concat "/bin/" lsp-java-jdt-ls-command)
|
||||
(or
|
||||
(executable-find lsp-java-jdt-ls-command)
|
||||
(user-error "Could not find Java language server"))))
|
||||
|
||||
(after! java-mode
|
||||
(setq lsp-java-jdt-ls-prefer-native-command t))
|
||||
(add-hook! java-mode
|
||||
(setq-local lsp-java-server-install-dir
|
||||
(concat (+lsp-java-server-store-path) "/share/java/jdtls/")))
|
||||
|
||||
(defadvice! ~/lsp-java-ls-command ()
|
||||
"Configure `lsp-java' to work with Nix."
|
||||
:override #'lsp-java--ls-command
|
||||
(let ((root (or (doom-project-root) (f-join (getenv "XDG_DATA_HOME") "jdtls"))))
|
||||
(list lsp-java-jdt-ls-command
|
||||
"-configuration" (f-join root "config-linux")
|
||||
"-data" (f-join root "java-workspace"))))
|
||||
#+end_src
|
||||
|
||||
** Yuck
|
||||
|
||||
#+call: confpkg("Mode: Yuck")
|
||||
|
|
Loading…
Reference in a new issue