Alexander-Miller/treemacs@6857816 -> Alexander-Miller/treemacs@9eaef27 DarwinAwardWinner/amx@b991497 -> DarwinAwardWinner/amx@37f9c7a Dewdrops/evil-exchange@3030e21 -> Dewdrops/evil-exchange@ac50f21 JuliaEditorSupport/julia-emacs@8ea90c7 -> JuliaEditorSupport/julia-emacs@fe6f6f7 OmniSharp/omnisharp-emacs@8ec5929 -> OmniSharp/omnisharp-emacs@5fad683 ProofGeneral/PG@bdb6782 -> ProofGeneral/PG@f0f0476 Sarcasm/irony-mode@76fd37f -> Sarcasm/irony-mode@ec6dce7 Silex/docker.el@0ca910b -> Silex/docker.el@ed0cdf0 Wilfred/helpful@584ecc8 -> Wilfred/helpful@7e4b1f0 abo-abo/swiper@1deef76 -> abo-abo/swiper@bb7965a agda/agda@9d08edb -> agda/agda@ecb9323 akermu/emacs-libvterm@a3fadd2 -> akermu/emacs-libvterm@1bc4516 akreisher/eshell-syntax-highlighting@172c9fb -> akreisher/eshell-syntax-highlighting@eeace52 alexmurray/flycheck-posframe@24fd9b3 -> alexmurray/flycheck-posframe@8f60c9b amake/flutter.el@696228a -> amake/flutter.el@960b635 ananthakumaran/tide@7f7334b -> ananthakumaran/tide@ad6fa78 asok/projectile-rails@8d6b373 -> asok/projectile-rails@f1fe6e8 bastibe/org-journal@f4b1549 -> bastibe/org-journal@043bb9e bbatsov/projectile@fd59947 -> bbatsov/projectile@1528ed4 bradyt/dart-mode@04fcd64 -> bradyt/dart-mode@43975c9 brotzeit/rustic@61d600e -> brotzeit/rustic@d97ec86 charignon/github-review@d0c8234 -> charignon/github-review@341b7a1 clojure-emacs/cider@815204f -> clojure-emacs/cider@4278d7c clojure-emacs/clj-refactor.el@b24ce76 -> clojure-emacs/clj-refactor.el@9f3e735 clojure-emacs/clojure-mode@f26379b -> clojure-emacs/clojure-mode@a14671e codesuki/add-node-modules-path@f31e69c -> codesuki/add-node-modules-path@7d9be65 company-mode/company-mode@88001d7 -> company-mode/company-mode@7207cb1 cpitclaudel/company-coq@4da7b41 -> cpitclaudel/company-coq@7423ee2 cython/cython@9a761a6 -> cython/cython@9decfca dgutov/diff-hl@4c46b3b -> dgutov/diff-hl@1af31fe dgutov/robe@3ef165c -> dgutov/robe@126650a domtronn/all-the-icons.el@2f5ea72 -> domtronn/all-the-icons.el@a8c8417 editorconfig/editorconfig-emacs@048c553 -> editorconfig/editorconfig-emacs@9da2dab elixir-editors/emacs-elixir@9de08c1 -> elixir-editors/emacs-elixir@0212b06 ema2159/centaur-tabs@50fd573 -> ema2159/centaur-tabs@df97209 emacs-csharp/csharp-mode@09b4d57 -> emacs-csharp/csharp-mode@f977800 emacs-ess/ESS@5169b0d -> emacs-ess/ESS@126d344 emacs-evil/evil-collection@334670e -> emacs-evil/evil-collection@b45ec5b emacs-evil/evil@cc9d688 -> emacs-evil/evil@7eace67 emacs-helm/helm-org@b7a18df -> emacs-helm/helm-org@d67186d emacs-helm/helm@dbdec63 -> emacs-helm/helm@98af298 emacs-jp/migemo@f42832c -> emacs-jp/migemo@f756cba emacs-lsp/dap-mode@aa15b9c -> emacs-lsp/dap-mode@ae395aa emacs-lsp/helm-lsp@e934fea -> emacs-lsp/helm-lsp@74a02f8 emacs-lsp/lsp-dart@71902ca -> emacs-lsp/lsp-dart@f3b70ec emacs-lsp/lsp-ivy@c70ee8b -> emacs-lsp/lsp-ivy@515e597 emacs-lsp/lsp-java@5f6d357 -> emacs-lsp/lsp-java@542aaf1 emacs-lsp/lsp-metals@c76eeb6 -> emacs-lsp/lsp-metals@51a89c1 emacs-lsp/lsp-mode@c3cbadc -> emacs-lsp/lsp-mode@eda51c2 emacs-lsp/lsp-ui@0ac3e12 -> emacs-lsp/lsp-ui@1dbea9f emacs-php/php-mode@8cdc727 -> emacs-php/php-mode@a2bca9b emacs-php/phpactor.el@62d2372 -> emacs-php/phpactor.el@80788a8 emacs-straight/auctex@384c4b9 -> emacs-straight/auctex@0f3639a emacs-straight/dired-git-info@b47f2b0 -> emacs-straight/dired-git-info@9461476 emacs-straight/org-mode@0b117f7 -> emacs-straight/org-mode@7a62a4d emacs-straight/project@2e7afbe -> emacs-straight/project@388ffdf emacs-straight/xclip@2951c6b -> emacs-straight/xclip@ef2ad92 emacsattic/nose@f852829 -> emacsattic/nose@f852829 emacsorphanage/quickrun@8008780 -> emacsorphanage/quickrun@57db985 erlang/otp@af06b43 -> erlang/otp@94c9738 factor/factor@1928e60 -> factor/factor@5bfeab6 flycheck/flycheck@01396a5 -> flycheck/flycheck@f8c679f greghendershott/racket-mode@75ea8f6 -> greghendershott/racket-mode@5115c47 hakimel/reveal.js@0582f57 -> hakimel/reveal.js@cf8e64b haskell/haskell-mode@3a019e6 -> haskell/haskell-mode@1baa12a hlissner/doom-snippets@aa5587b -> hlissner/doom-snippets@afe549b hlissner/emacs-counsel-css@6427dfc -> hlissner/emacs-counsel-css@f7647b4 hlissner/emacs-doom-themes@55f01ed -> hlissner/emacs-doom-themes@4199e74 hlissner/emacs-solaire-mode@a8fe09d -> hlissner/emacs-solaire-mode@9d143db hvesalai/emacs-sbt-mode@7b121fc -> hvesalai/emacs-sbt-mode@0bdc36b hvesalai/emacs-scala-mode@402d6df -> hvesalai/emacs-scala-mode@1ab5f64 ideasman42/emacs-spell-fu@a7db587 -> ideasman42/emacs-spell-fu@30c5eea iqbalansari/emacs-emojify@cfa0086 -> iqbalansari/emacs-emojify@1b72641 jacktasia/dumb-jump@f6a1165 -> jacktasia/dumb-jump@8bc1950 jaor/geiser@26dd2f4 -> jaor/geiser@8e61c27 jcollard/elm-mode@188b9c7 -> jcollard/elm-mode@e9fcf9c jkitchin/ox-clip@38b83ac -> jkitchin/ox-clip@2095537 joaotavora/eglot@a2d1fc9 -> joaotavora/eglot@2fbcab2 joaotavora/sly@fb84318 -> joaotavora/sly@5966d68 jorgenschaefer/circe@265f36c -> jorgenschaefer/circe@e67e2d1 js-emacs/js2-refactor.el@d4c40b5 -> js-emacs/js2-refactor.el@a0977c4 js-emacs/xref-js2@6f1ed5d -> js-emacs/xref-js2@fd6b723 jscheid/dtrt-indent@4a30d8e -> jscheid/dtrt-indent@37529fc justbur/emacs-which-key@c0608e8 -> justbur/emacs-which-key@c632dbf justinbarclay/parinfer-rust-mode@c825606 -> justinbarclay/parinfer-rust-mode@f130fa0 jyp/dante@7b1ab64 -> jyp/dante@8741419 kaushalmodi/ox-hugo@a05667e -> kaushalmodi/ox-hugo@02140a2 kidd/org-gcal.el@0a6f9a7 -> kidd/org-gcal.el@d38acda leanprover/lean-mode@15bee87 -> leanprover/lean-mode@5c50338 ledger/ledger-mode@3495d12 -> ledger/ledger-mode@32fef09 magit/forge@8382fd3 -> magit/forge@f4c95dd magit/magit@4735b92 -> magit/magit@577f16d magit/orgit@ac9b1a4 -> magit/orgit@609fd0c magnars/expand-region.el@ea6b4cb -> magnars/expand-region.el@4b83227 magnars/multiple-cursors.el@a9d7764 -> magnars/multiple-cursors.el@7b13b03 mhayashi1120/Emacs-wgrep@f0ef9bf -> mhayashi1120/Emacs-wgrep@f9687c2 millejoh/emacs-ipython-notebook@4ff76e5 -> millejoh/emacs-ipython-notebook@142ff50 non-Jedi/lsp-julia@c523c25 -> non-Jedi/lsp-julia@c487ed7 nonsequitur/inf-ruby@1fc972e -> nonsequitur/inf-ruby@c6990a6 ocaml-ppx/ocamlformat@7db8d13 -> ocaml-ppx/ocamlformat@448ac7c ocaml/dune@f839fc1 -> ocaml/dune@a88ce5b ocaml/merlin@36d0aef -> ocaml/merlin@cc17ed6 ocaml/tuareg@ccde45b -> ocaml/tuareg@37a6730 org-roam/org-roam@b0fd126 -> org-roam/org-roam@8ad57b1 purcell/diredfl@cd052df -> purcell/diredfl@4ca3265 purcell/envrc@a7c6ca8 -> purcell/envrc@110a221 purescript-emacs/purescript-mode@8410baf -> purescript-emacs/purescript-mode@0acd1af racer-rust/emacs-racer@f17f9d7 -> racer-rust/emacs-racer@1e63e98 raxod502/prescient.el@9631db7 -> raxod502/prescient.el@8573df9 redguardtoo/evil-nerd-commenter@2730820 -> redguardtoo/evil-nerd-commenter@b8ac35f rolandwalker/flyspell-lazy@d57382c -> rolandwalker/flyspell-lazy@0fc5996 rubocop/rubocop-emacs@1372ee3 -> rubocop/rubocop-emacs@f5fd18a seagle0128/doom-modeline@5fe7fd6 -> seagle0128/doom-modeline@00bc89b seagle0128/grip-mode@1aebf9c -> seagle0128/grip-mode@98d566d skeeto/elfeed@362bbe5 -> skeeto/elfeed@e29c8b9 skk-dev/ddskk@275a831 -> skk-dev/ddskk@cec9936 snosov1/toc-org@aef220c -> snosov1/toc-org@c4c61c5 spotify/dockerfile-mode@ed1d04c -> spotify/dockerfile-mode@3b13745 takaxp/org-tree-slide@c9487e5 -> takaxp/org-tree-slide@9d2ba1d technomancy/fennel-mode@bebc9dd -> technomancy/fennel-mode@ba14a7d travisbhartwell/nix-emacs@977b9a5 -> travisbhartwell/nix-emacs@053a2d5 tumashu/posframe@3454a4c -> tumashu/posframe@fff21cc tumashu/pyim@e54153f -> tumashu/pyim@f48c3ed widefox/flycheck-raku@046f35a -> widefox/flycheck-raku@b1acccd wyuenho/all-the-icons-dired@fc2dfa1 -> wyuenho/all-the-icons-dired@f401fe2 xuchunyang/elisp-demos@ed9578d -> xuchunyang/elisp-demos@924b07d xuchunyang/osx-dictionary.el@1b79ff6 -> xuchunyang/osx-dictionary.el@4d4cc19 yqrashawn/fd-dired@9fb966d -> yqrashawn/fd-dired@7d18938 yyoncho/helm-icons@5a668ef -> yyoncho/helm-icons@e4a2cd1 Closes #4786 Closes #4801 Closes #4803 Skipped bumping straight.el because of raxod502/straight.el#714. Will adapt soon.
lang/java
Description
This module adds java support to Doom Emacs, including android-mode
and
groovy-mode
.
Module Flags
+lsp
Enables integration for the eclipse.jdt.ls LSP server.+meghanada
Enables the meghanada-mode
The +lsp
and +meghanada
packages are mutually exclusive and do not work
together. At the time of writing the +meghanada
is already configured whereas
+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
This module requires the Java SDK.
OpenJDK 11
Ubuntu
sudo apt-get install openjdk-11-jdk-headless
Fedora
sudo dnf install java-11-openjdk
Oracle JDK 11
Ubuntu
sudo add-apt-repository ppa:linuxuprising/java
sudo apt update
sudo apt install oracle-java11-installer
sudo apt install oracle-java11-set-default
Fedora
curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
tar zxvf openjdk-11.0.2_linux-x64_bin.tar.gz
sudo mv jdk-11.0.2/ /usr/local/
Open /etc/profile.d/jdk11.sh
as root and add
export JAVA_HOME=/usr/local/jdk-11.0.2
export PATH=$PATH:$JAVA_HOME/bin
Save the file and source the file
source /etc/profile.d/jdk11.sh
java -version
Multiple Java Versions
It is common to need support for multiple Java versions. You can use a generic tool like jabba to install and manage multiple Java versions on any OS.
To switch between Java versions in Doom, you can use direnv and the 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:
PATH_add ~/.jabba/jdk/adopt@1.11.0-3
JAVA_HOME=~/.jabba/jdk/adopt@1.11.0-3
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
+lsp
features
According to https://github.com/emacs-lsp/lsp-java it adds
- As you type reporting of parsing and compilation errors (via flycheck/lsp-ui)
- Code completion - using company-lsp or builtin complete-at-point
- Javadoc hovers - using lsp-ui
- Code actions - using lsp-ui
- Code outline - using builtin imenu
- Code navigation - using builtin xref
- Code lens (references/implementations) - using builtin xref
- Highlights
- Code formatting
- Maven pom.xml project support
- Limited Gradle support
- Visual debugger - dap-mode
- Test runner - dap-mode
- Project explorer integration - treemacs
- Integration with Spring Initializr
+meghanada
features
According to https://github.com/mopemope/meghanada-emacs/ it adds
- Auto-update server module
- Gradle and Maven and Eclipse project support
- No need build tool's plugin
- Run build tool task
- Compile your project
- Syntax check and analyze java source (
flycheck-meghanada
) - Support
Generic Types
- Code completion with company-mode (
company-meghanada
) - Optimize import and sort
- Jump declaration
- Run JUnit test (include test runner)
- Diagnostic reporting with flycheck (
flycheck-meghanada
) - Show symbol's type info with
el-doc
- Search references
- Full-featured text search
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.