Configure java +lsp test runner via dap-mode (#3049)
* Configure java +lsp test runner via dap-mode This configures dap-mode appropriately so the user can run tests directly from Doom. It adds two bindings as well which tries to mirror other major modes: * `SPC m t t` runs all the tests in the class at point. * `SPC m t s` runs a single test method at point. I also expanded the README with more details about configuring `+lsp`. * Add +java/run-test, document +lsp/uninstall-server * Add +java/debug-test * Fix localleader bindings When in `:init` they don't load in time on the initial Java buffer.
This commit is contained in:
parent
e411367f4b
commit
79923809e8
2 changed files with 62 additions and 7 deletions
|
@ -4,10 +4,31 @@
|
||||||
(use-package! lsp-java
|
(use-package! lsp-java
|
||||||
:after lsp-clients
|
:after lsp-clients
|
||||||
:preface
|
:preface
|
||||||
(setq lsp-java-server-install-dir (concat doom-etc-dir "eclipse.jdt.ls/server/")
|
(setq lsp-java-workspace-dir (concat doom-etc-dir "java-workspace"))
|
||||||
lsp-java-workspace-dir (concat doom-etc-dir "java-workspace")
|
|
||||||
lsp-jt-root (concat doom-etc-dir "eclipse.jdt.ls/server/java-test/server/"))
|
|
||||||
(add-hook! java-mode-local-vars #'lsp!)
|
(add-hook! java-mode-local-vars #'lsp!)
|
||||||
:config
|
(when (featurep! :tools debugger +lsp)
|
||||||
;; TODO keybinds
|
(defun +java/run-test ()
|
||||||
)
|
"Runs test at point. If in a method, runs the test method, otherwise runs the entire test class."
|
||||||
|
(interactive)
|
||||||
|
(condition-case nil
|
||||||
|
(dap-java-run-test-method)
|
||||||
|
(user-error (dap-java-run-test-class))))
|
||||||
|
|
||||||
|
(defun +java/debug-test ()
|
||||||
|
"Runs test at point in a debugger. If in a method, runs the test method, otherwise runs the entire test class."
|
||||||
|
(interactive)
|
||||||
|
(condition-case nil
|
||||||
|
(call-interactively #'dap-java-debug-test-method)
|
||||||
|
(user-error (call-interactively #'dap-java-debug-test-class))))
|
||||||
|
|
||||||
|
(map! :map java-mode-map
|
||||||
|
:localleader
|
||||||
|
(:prefix ("t" . "Test")
|
||||||
|
:desc "Run test class or method" "t" #'+java/run-test
|
||||||
|
:desc "Run all tests in class" "a" #'dap-java-run-test-class
|
||||||
|
:desc "Debug test class or method" "d" #'+java/debug-test
|
||||||
|
:desc "Debug all tests in class" "D" #'dap-java-debug-test-class)))
|
||||||
|
:init
|
||||||
|
(when (featurep! :tools debugger +lsp)
|
||||||
|
(setq lsp-jt-root (concat lsp-java-server-install-dir "java-test/server/")
|
||||||
|
dap-java-test-runner (concat lsp-java-server-install-dir "test-runner/junit-platform-console-standalone.jar"))))
|
||||||
|
|
|
@ -13,10 +13,12 @@
|
||||||
- [[#oracle-jdk-11][Oracle JDK 11]]
|
- [[#oracle-jdk-11][Oracle JDK 11]]
|
||||||
- [[#ubuntu-1][Ubuntu]]
|
- [[#ubuntu-1][Ubuntu]]
|
||||||
- [[#fedora-1][Fedora]]
|
- [[#fedora-1][Fedora]]
|
||||||
|
- [[#multiple-java-versions][Multiple Java Versions]]
|
||||||
- [[#features][Features]]
|
- [[#features][Features]]
|
||||||
- [[#lsp-features][=+lsp= features]]
|
- [[#lsp-features][=+lsp= features]]
|
||||||
- [[#meghanada-features][=+meghanada= features]]
|
- [[#meghanada-features][=+meghanada= features]]
|
||||||
- [[#configuration][Configuration]]
|
- [[#configuration][Configuration]]
|
||||||
|
- [[#lsp][=+lsp=]]
|
||||||
|
|
||||||
* Description
|
* Description
|
||||||
This module adds [[https://www.java.com][java]] support to Doom Emacs, including =android-mode= and
|
This module adds [[https://www.java.com][java]] support to Doom Emacs, including =android-mode= and
|
||||||
|
@ -30,6 +32,9 @@ The =+lsp= and =+meghanada= packages are mutually exclusive and do not work
|
||||||
together. At the time of writing the =+meghanada= is already configured whereas
|
together. At the time of writing the =+meghanada= is already configured whereas
|
||||||
=+lsp= needs to manual configuring.
|
=+lsp= needs to manual configuring.
|
||||||
|
|
||||||
|
The =lsp= test runner requires that =:tools (debugger +lsp)= is enabled, as this
|
||||||
|
provides =dap-mode= which contains the Java test runner.
|
||||||
|
|
||||||
* Prerequisites
|
* Prerequisites
|
||||||
This module requires the Java SDK.
|
This module requires the Java SDK.
|
||||||
|
|
||||||
|
@ -72,6 +77,23 @@ source /etc/profile.d/jdk11.sh
|
||||||
java -version
|
java -version
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
** Multiple Java Versions
|
||||||
|
It is common to need support for multiple Java versions. You can use a generic
|
||||||
|
tool like [[https://github.com/shyiko/jabba][jabba]] to install and manage multiple Java versions on any OS.
|
||||||
|
|
||||||
|
To switch between Java versions in Doom, you can use [[https://github.com/direnv/direnv][direnv]] and the [[file:~/.emacs.d/modules/tools/direnv/README.org::+TITLE: tools/direnv][direnv module]]. To set a
|
||||||
|
Java version for a particular project, create a =.envrc= pointing to the Java
|
||||||
|
installation in the root of the project:
|
||||||
|
|
||||||
|
#+BEGIN_SRC conf-unix
|
||||||
|
PATH_add ~/.jabba/jdk/adopt@1.11.0-3
|
||||||
|
JAVA_HOME=~/.jabba/jdk/adopt@1.11.0-3
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
And then run =direnv allow .= in the project directory. If the =direnv= module
|
||||||
|
is enabled, then Doom will automatically source this environment before
|
||||||
|
executing the LSP server.
|
||||||
|
|
||||||
* Features
|
* Features
|
||||||
** =+lsp= features
|
** =+lsp= features
|
||||||
According to [[https://github.com/emacs-lsp/lsp-java]] it adds
|
According to [[https://github.com/emacs-lsp/lsp-java]] it adds
|
||||||
|
@ -111,4 +133,16 @@ According to [[https://github.com/mopemope/meghanada-emacs/]] it adds
|
||||||
+ Search references
|
+ Search references
|
||||||
+ Full-featured text search
|
+ Full-featured text search
|
||||||
|
|
||||||
* TODO Configuration
|
* Configuration
|
||||||
|
** =+lsp=
|
||||||
|
Install the eclipse server by executing =M-x lsp-install-server= and selecting
|
||||||
|
=jdtls=. After that any newly opened =java= files should start the LSP server
|
||||||
|
automatically.
|
||||||
|
|
||||||
|
To update the server, perform =SPC u M-x lsp-install-server=.
|
||||||
|
|
||||||
|
Note that if you change Java version you may need to remove the LSP server and
|
||||||
|
install it again. You can do this with =M-x +lsp/uninstall-server= followed by
|
||||||
|
=M-x lsp-install-server=.
|
||||||
|
|
||||||
|
Enable the =:tools (debugger +lsp)= module to get test runner support.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue