diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index ce0e34a4..cd57ef1c 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -323,6 +323,9 @@ [Snoweuph](https://github.com/snoweuph) +- Added {option}`vim.lsp.presets.jls.enable` and made it available under + `vim.languages.java.lsp.servers`. + - Allow the usage of `pks.tree-sitter-grammars` in {option}`vim.treesitter.grammars` and language module tree-sitter package options created via `mkGrammarOption`. diff --git a/modules/plugins/languages/java.nix b/modules/plugins/languages/java.nix index 25a78acb..6da8dba5 100644 --- a/modules/plugins/languages/java.nix +++ b/modules/plugins/languages/java.nix @@ -14,7 +14,7 @@ cfg = config.vim.languages.java; defaultServers = ["jdt-language-server"]; - servers = ["jdt-language-server"]; + servers = ["jdt-language-server" "jls"]; in { options.vim.languages.java = { enable = mkEnableOption "Java language support"; diff --git a/modules/plugins/lsp/presets/default.nix b/modules/plugins/lsp/presets/default.nix index 1b4bdedf..66a8d9ef 100644 --- a/modules/plugins/lsp/presets/default.nix +++ b/modules/plugins/lsp/presets/default.nix @@ -28,6 +28,7 @@ ./intelephense.nix ./jdt-language-server.nix ./jinja-lsp.nix + ./jls.nix ./jq-lsp.nix ./julia-languageserver.nix ./just-lsp.nix diff --git a/modules/plugins/lsp/presets/jls.nix b/modules/plugins/lsp/presets/jls.nix new file mode 100644 index 00000000..33e1ecff --- /dev/null +++ b/modules/plugins/lsp/presets/jls.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: let + inherit (lib.meta) getExe; + inherit (lib.modules) mkIf; + inherit (lib.nvim.types) mkLspPresetEnableOption; + + cfg = config.vim.lsp.presets.jls; +in { + options.vim.lsp.presets.jls = { + enable = mkLspPresetEnableOption "jls" "NeoVim Java" []; + }; + + config = mkIf cfg.enable { + vim.lsp.servers.jls = { + enable = true; + cmd = [(getExe inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.jls)]; + root_markers = [ + ".git" + ".java-version" + "pom.xml" + "build.xml" + "build.gradle" + "build.gradle.kts" + "settings.gradle" + "settings.gradle.kts" + ]; + }; + }; +}