Dusk.nvim is a blazing fast Lua config suited for Full-stack Java development.
Optimized with Spring Boot && Angular projects in mind.
Dusk.nvim is designed to be:
- minimal (~800 lines of configuration only)
- functional (aims to replace your IDE)
- performant (~70-80ms startup time on modern hardware)
- Out-of-the-box complete. Works with installation.
- Not opinionated. Defaults are always preferred.
- Native LSP and autocompletion
- Syntax highlighting via nvim-treesitter
- Java code runner with jaq
- Java Unit Testing with vscode-java-test
- Java Debugging via nvim-dap
- Git integration with LazyGit
- Explore files via nvim-tree
- Fuzzy finder via Telescope
- Notes with Markdown
- Blazing fast performance
Supported colorschemes are:
Feel free to add your own colorschemes. Most colorschemes will be compatible with Dusk.
For Dusk.nvim to perform as intended, you need to have the following dependencies installed:
- Neovim version >= 0.9.5
- Git 2.23+
- Ripgrep for telescope
- fd for telescope
- Nodejs
- Neovim node client (npm install -g neovim) - neovim/node-client
- "zig", "clang", or "gcc" executables to be able to compile treesitter parsers (check your package manager for one of these)
- Treesitter-cli nodejs module (Check your package manager for a treesitter or treesitter-cli package)
- Java 17+ (for Java LSP server)
- A font with nerdfont icons (my suggestion: https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Hack)
- LazyGit if you are going to use it inside neovim.
NOTE: Run :checkhealth command to see what other dependencies you might be missing and to receive help if you have problems with installation.
Platform | Supported |
---|---|
Windows | ✅ |
macOS | ✅ |
Linux | ✅ |
- Make sure to remove or move your current
nvim
directory (~/.config/nvim
), if it exists. git clone https://github.com/imbacraft/dusk.nvim
- Copy or Move the
nvim
folder from the cloned dusk.nvim project (not the dusk.nvim folder!) to your~/.config/
folder. In the end, your folder should look like this:~/.config/nvim
. Please note, depending on your OS, neovim might search for configuration in a different folder. In this case, run the:checkhealth
command inside neovim, to see where it looks for configuration and place the nvim folder inside that. - Run the
nvim
command and wait for the plugins to be installed. - If some plugins fail to install at this point, don't be alarmed. Enter the
:qa!
command to exit neovim. - Re-run the
nvim
command and enterSPC p s
to update the package manager. - Now all the plugins should have been installed. If some have not, run the
:checkhealth
command and check the dependencies section above to see what you might be missing. - Happy editing!
Dusk.nvim provides a java development experience with the following advantages:
- Eclipse level editing and refactoring capabilities in neovim
- Autocomplete candidates from the current buffer, which includes comments
- Superb coding navigation - searches references in decompiled sources also
- Support for running and debugging applications with JVM Args (including Spring active profiles)
- Execute and debug test methods and classes
Features curently not supported (these are what you will miss from your IDE - but also shows the room for improvement):
- No option for running all tests in test resource folders
- No support for editing many projects in the same neovim instance. Right now for each project you should open new neovim instance.
- Referenced external libraries not available in file explorer tree
- Refactoring of java packages and filenames not supported
In jdtls.lua, you will find the following snippet. Here you can configure your multiple java runtimes.
Example:
settings = {
java = {
configuration = {
runtimes = {
{
name = "JavaSE-1.8",
path = "/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home",
},
{
name = "JavaSE-11",
path = "/opt/homebrew/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home",
default = true
},
{
name = "JavaSE-19",
path = "/opt/homebrew/Cellar/openjdk/19.0.2/libexec/openjdk.jdk/Contents/Home",
},
}
}
}
}