Dusk.nvim is a blazing fast Lua config suited for Full Stack Java development.
A lot of things have changed in the Neovim world since Dusk's release, near a year ago. The most important change came recently, with the release of lazy.nvim.
Together with the migration to this package manager, I decided to implement fundamental design changes, which were inspired by the powerful config of nvimdots, which you should definitely check out.
I forked that config and adjusted it to Dusk's design. I removed unneccesary plugins, made the keymaps much more intuitive, enhanced the functionality for Java development and implemented many ui changes.
The updated design principles of Dusk.nvim are as follows:
Supported colorschemes are:
Feel free to add your own colorschemes. Most colorschemes will be compatible with Dusk.
For Dusk.nvim to work as intended, you need to have the following dependencies installed:
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 | ✅ |
nvim
directory (~/.config/nvim
), if it exists.git clone https://github.com/imbacraft/dusk.nvim
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.nvim
command and wait for the plugins to be installed.:qa!
command to exit neovim.nvim
command and enter SPC p s
to update the package manager.:checkhealth
command check the dependencies section above.dusk.nvim
├── LICENSE
├── README.md
└── nvim
├── ftplugin
│ └── java.lua
├── init.lua
├── jars
│ ├── java-debug
│ │ └── com.microsoft.java.debug.plugin-0.44.0.jar
│ └── vscode-java-test
└── lua
├── core
│ ├── autocommands.lua
│ ├── global.lua
│ ├── init.lua
│ ├── options.lua
│ ├── pack.lua
│ └── settings.lua
├── keymaps
│ ├── init.lua
│ └── which-key.lua
└── modules
├── configs
│ ├── completion
│ ├── editor
│ ├── lang
│ ├── tool
│ └── ui
├── plugins
│ ├── completion.lua
│ ├── editor.lua
│ ├── lang.lua
│ ├── tool.lua
│ └── ui.lua
└── utils
├── functions.lua
├── icons.lua
└── init.lua
The jars required for Java debugging and testing are included in the jars folder. However, if you want to build them yourself from source, do the following:
git clone https://github.com/microsoft/java-debug
cd java-debug/
./mvnw clean install
git clone https://github.com/Microsoft/vscode-java-test
cd vscode-java-test
npm install
npm run build-plugin
In the file ftplugin/java.lua, you can setup your Java runtimes. The commented code for the runtimes is my own configuration. Feel free to adjust it to your preferences.
Here is the excerpt from ftplugin/java.lua with my own configuration:
configuration = {
updateBuildConfiguration = "interactive",
-- runtimes = {
-- {
-- name = "JavaSE-1.8",
-- path = "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home",
-- },
-- {
-- 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",
-- },
-- {
-- name = "JavaSE-19",
-- path = "/opt/homebrew/Cellar/openjdk/19.0.2/libexec/openjdk.jdk/Contents/Home",
-- },
-- },
}