FStarLang/fstar-mode.el@3bbfe93abd -> FStarLang/fstar-mode.el@537c31983f Fuco1/sphinx-mode@77ca51adf9 -> Fuco1/sphinx-mode@038a9195b0 OCamlPro/ocp-indent@f38578c25d -> OCamlPro/ocp-indent@1213857683 ProofGeneral/PG@af2e7b9a4e -> ProofGeneral/PG@fbb2878e49 ShuguangSun/ess-view-data@dd6a85935b -> ShuguangSun/ess-view-data@5ec1c7206f abicky/nodejs-repl.el@130d49b073 -> abicky/nodejs-repl.el@c232b4964b agda/agda@900bdaa335 -> agda/agda@5e31b2534d ananthakumaran/exunit.el@8de56e3fd5 -> ananthakumaran/exunit.el@9a7cfc3d78 bricka/emacs-kotlin-ts-mode@a25d56ceca -> bricka/emacs-kotlin-ts-mode@051c9ef534 clojure-emacs/cider@12f10a6f4b -> clojure-emacs/cider@389833f85a clojure-emacs/clj-refactor.el@dc1bbc8cda -> clojure-emacs/clj-refactor.el@362cb46bf8 clojure-emacs/clojure-mode@b766094aea -> clojure-emacs/clojure-mode@28dc02114a clojure-emacs/clojure-ts-mode@da56a6938f -> clojure-emacs/clojure-ts-mode@32490c80fa cpitclaudel/company-coq@5affe7a96a -> cpitclaudel/company-coq@78ed04ce39 diml/utop@3322adaa52 -> diml/utop@33201e6076 emacs-ess/ESS@d19efaae12 -> emacs-ess/ESS@8369d574f1 emacs-geiser/chicken@5f2c1bb446 -> emacs-geiser/chicken@8342bad8ce emacs-geiser/geiser@c1c27072a4 -> emacs-geiser/geiser@c8b862f00e emacs-lsp/emacs-ccls@5636ee6c50 -> emacs-lsp/emacs-ccls@34251b799e emacs-lsp/lsp-haskell@081d5115ce -> emacs-lsp/lsp-haskell@aa9b5bce35 emacs-lsp/lsp-java@21c89243ad -> emacs-lsp/lsp-java@9230a0007c emacs-lsp/lsp-pyright@73377169be -> emacs-lsp/lsp-pyright@0e59c00c7f emacs-lsp/lsp-sourcekit@1fb230109e -> emacs-lsp/lsp-sourcekit@30918cd1ae emacs-php/php-mode@462b62248f -> emacs-php/php-mode@40b8abed30 emacs-rustic/rustic@29f912c750 -> emacs-rustic/rustic@2b4ac5de3b emacs-straight/auctex@f58a2b972b -> emacs-straight/auctex@a2809e4d70 emacs-straight/org-mode@4e6d38d1a6 -> emacs-straight/org-mode@8b15a0d0b4 emacsorphanage/dart-mode@f82ff05230 -> emacsorphanage/dart-mode@edb45cb709 emacsorphanage/htmlize@8e3841c837 -> emacsorphanage/htmlize@c9a8196a59 emacsorphanage/restclient@bba663590f -> emacsorphanage/restclient@ad97f666b6 erlang/otp@b9d3ec017d -> erlang/otp@2a970bf725 fosskers/sly-overlay@d629450590 -> fosskers/sly-overlay@345b554ad0 fsharp/emacs-fsharp-mode@8d08f05788 -> fsharp/emacs-fsharp-mode@91abae13e8 fuxialexander/org-pdftools@5613b7ae56 -> fuxialexander/org-pdftools@2b3357828a fxbois/web-mode@be2d59c8fa -> fxbois/web-mode@1eb0abb1a9 godotengine/emacs-gdscript-mode@5136be407a -> godotengine/emacs-gdscript-mode@a0d25b46d8 greghendershott/racket-mode@c4cc7c160b -> greghendershott/racket-mode@172b7d4c5a hakimel/reveal.js@eb95b14531 -> hakimel/reveal.js@4cf184924d haskell/haskell-mode@e9c3567393 -> haskell/haskell-mode@e5d32021ea idris-hackers/idris-mode@ccf32ed0b5 -> idris-hackers/idris-mode@da5c22f436 jart/disaster@8b44591322 -> jart/disaster@0299c129d4 joaotavora/sly@ce17a568ef -> joaotavora/sly@63131ef965 jschaf/powershell.el@9efa1b4d0a -> jschaf/powershell.el@99e0e73082 jwiegley/nix-update-el@77022ccd91 -> jwiegley/nix-update-el@d67f4f7ba8 kaushalmodi/ox-hugo@e3365cb4e6 -> kaushalmodi/ox-hugo@a907ea9514 ledger/ledger-mode@d9b6648201 -> ledger/ledger-mode@e9bb645e8f magit/orgit-forge@050590fbc7 -> magit/orgit-forge@5a0dbe2601 magit/orgit@224350397d -> magit/orgit@8493c24808 minad/org-modern@1723689710 -> minad/org-modern@d5e1f5af65 necaris/conda.el@05de0c8f0c -> necaris/conda.el@8a1a934a2d nex3/haml-mode@a64d58df8f -> nex3/haml-mode@3bb4a96535 nix-community/nix-ts-mode@62ce3a2dc3 -> nix-community/nix-ts-mode@e68ef36312 ocaml/dune@422986440e -> ocaml/dune@28b7e8f3b2 ocaml/merlin@e4c66857ad -> ocaml/merlin@8b88b89ee7 oer/org-re-reveal@da7e1feba9 -> oer/org-re-reveal@4eb0f71474 org-noter/org-noter@a28f61238a -> org-noter/org-noter@aafa08a49c org-roam/org-roam@c172951345 -> org-roam/org-roam@89dfaef38b polymode/polymode@74ba75d4bc -> polymode/polymode@25ba9463a4 pope/ob-go@2067ed55f4 -> pope/ob-go@c6c7c811fb ppareit/graphviz-dot-mode@8ff793b137 -> ppareit/graphviz-dot-mode@2c7ba85d19 purescript-emacs/psc-ide-emacs@4e614df553 -> purescript-emacs/psc-ide-emacs@c64b05d901 purescript-emacs/purescript-mode@8c4736759a -> purescript-emacs/purescript-mode@61732e23bd pythonic-emacs/pyenv-mode@ba1a8c7bd7 -> pythonic-emacs/pyenv-mode@364bddb8f0 rust-lang/rust-mode@25d91cff28 -> rust-lang/rust-mode@9915b3a585 salmanebah/opencl-mode@204d5d9e0f -> salmanebah/opencl-mode@6464abf969 shoshin/minitest-emacs@5999c45c04 -> shoshin/minitest-emacs@d278e94fb1 skuro/plantuml-mode@ea45a13707 -> skuro/plantuml-mode@348e83ff19 slim-template/emacs-slim@8c92169817 -> slim-template/emacs-slim@0b1b380329 sogaiu/janet-ts-mode@ac684edf57 -> sogaiu/janet-ts-mode@0e4d04d648 swift-emacs/swift-mode@e30b9d46e0 -> swift-emacs/swift-mode@fc7df7bd90 szermatt/emacs-bash-completion@d0637428fd -> szermatt/emacs-bash-completion@762f28fefb technomancy/fennel-mode@df8e83d6e2 -> technomancy/fennel-mode@0d638f6133 tpapp/julia-repl@317d560218 -> tpapp/julia-repl@681efc14a7 wbolster/emacs-python-pytest@25d9801562 -> wbolster/emacs-python-pytest@ed2ecee09d ziglang/zig-mode@c46d024733 -> ziglang/zig-mode@dab3c37c2d zweifisch/ob-elixir@8990a8178b -> zweifisch/ob-elixir@8e5d2f3c7a
:lang java
Description unfold
This module adds Java support to Doom Emacs, including android-mode
and
groovy-mode
.
Maintainers
This module has no dedicated maintainers. Become a maintainer?
Module flags
- +lsp
-
Enable LSP support for
java-mode
. Requires doom-module::tools lsp and a langserver (supports eclipse.jdt.ls). - +tree-sitter
- Leverages tree-sitter for better syntax highlighting and structural text editing. Requires doom-module::tools tree-sitter.
Packages
- doom-package:android-mode
- doom-package:groovy-mode
-
if doom-module:+lsp and not doom-module::tools lsp +eglot
Hacks
No hacks documented for this module.
TODO Changelog
This module does not have a changelog yet.
Installation
Enable this module in your doom!
block.
This module requires:
- Java SDK
- The LSP test runner requires doom-module::tools debugger +lsp (requires doom-package:dap-mode)
OpenJDK 11
Ubuntu
#+begin-src sh apt-get install openjdk-11-jdk-headless
#+end_src
Fedora
dnf install java-11-openjdk
Oracle JDK 11
Ubuntu
add-apt-repository ppa:linuxuprising/java
apt update
apt install oracle-java11-installer
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 it:
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 have a different version of Java per-project, it is recommended you use
direnv and doom-module::tools direnv; create a .envrc
in the root of the project pointing
to the Java installation:
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. The doom-module::tools direnv
module will automatically source this environment before activating LSP servers.
Formatter
doom-module::editor format uses google-java-format to handle formatting.
To install, grab the latest all-deps.jar
release from the above, put it
somewhere and create a script similar to the below:
/usr/local/bin/google-java-format
java -jar /path/to/google-java-format-all-deps.jar
TODO Usage
This module's usage documentation is incomplete. Complete it?
doom-module:+lsp features
According to https://github.com/emacs-lsp/lsp-java, you get:
- As you type reporting of parsing and compilation errors (via doom-package:flycheck or doom-package:lsp-ui)
- Code completion (doom-package:company-lsp or complete-at-point)
- Javadoc hovers (doom-package:lsp-ui)
- Code actions (doom-package:lsp-ui)
- Code outline (doom-package:imenu)
- Code navigation (doom-package:xref)
- Code lens for references/implementations (doom-package:xref)
- Highlights
- Code formatting
- Maven pom.xml project support
- Limited Gradle support
- Visual debugger (doom-package:dap-mode)
- Test runner (doom-package:dap-mode)
- Project explorer integration (doom-package:treemacs)
- Integration with Spring Initializr
TODO Configuration
This module's configuration documentation is incomplete. Complete it?
doom-module:+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 doom-module::tools debugger +lsp module to get test runner support.
Troubleshooting
There are no known problems with this module. Report one?
Frequently asked questions
This module has no FAQs yet. Ask one?
TODO Appendix
This module has no appendix yet. Write one?