aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorHiPhish <hiphish@posteo.de>2020-09-29 18:16:52 +0200
committerHiPhish <hiphish@posteo.de>2021-01-30 00:17:00 +0100
commit82286d9ddafac612fa4cc2547619cb6996df612b (patch)
tree7f67d320a51f405b3cad503b31864a56fbafa2a6 /lua
parentJDT LS: add more root pattern files (diff)
downloadnvim-lspconfig-82286d9ddafac612fa4cc2547619cb6996df612b.tar
nvim-lspconfig-82286d9ddafac612fa4cc2547619cb6996df612b.tar.gz
nvim-lspconfig-82286d9ddafac612fa4cc2547619cb6996df612b.tar.bz2
nvim-lspconfig-82286d9ddafac612fa4cc2547619cb6996df612b.tar.lz
nvim-lspconfig-82286d9ddafac612fa4cc2547619cb6996df612b.tar.xz
nvim-lspconfig-82286d9ddafac612fa4cc2547619cb6996df612b.tar.zst
nvim-lspconfig-82286d9ddafac612fa4cc2547619cb6996df612b.zip
JDT LS: Add callback for language/status
Added a callback for this custom notification. On large Java projects startup can take several seconds, so having feedback during that time is very useful.
Diffstat (limited to 'lua')
-rw-r--r--lua/lspconfig/jdtls.lua40
1 files changed, 30 insertions, 10 deletions
diff --git a/lua/lspconfig/jdtls.lua b/lua/lspconfig/jdtls.lua
index a9dd0488..67b4de3d 100644
--- a/lua/lspconfig/jdtls.lua
+++ b/lua/lspconfig/jdtls.lua
@@ -32,14 +32,31 @@ local cmd = {
-- could add more build systems, such as Make, but let's keep things simple for
-- now.
local root_files = {
- 'build.xml', -- Ant
- 'pom.xml', -- Maven
- 'build.gradle', -- Gradle
- 'build.gradle.kts', -- Gradle
- 'settings.gradle', -- Gradle
- 'settings.gradle.kts', -- Gradle
+ -- Single-module projects
+ {
+ 'build.xml', -- Ant
+ 'pom.xml', -- Maven
+ 'settings.gradle', -- Gradle
+ 'settings.gradle.kts', -- Gradle
+ },
+ -- Multi-module projects
+ {'build.gradle', 'build.gradle.kts'},
}
+
+--- Callback function for the `language/status` notification.
+--
+-- The server sends a non-standard notification when the status of the language
+-- server changes. This can be used to display progress as the server is
+-- starting up.
+local function on_language_status(_, _, result)
+ local command = vim.api.nvim_command
+ command('echohl ModeMsg')
+ command(string.format('echo "%s"', result.message))
+ command('echohl None')
+end
+
+
configs[server_name] = {
default_config = {
cmd = cmd,
@@ -49,9 +66,11 @@ configs[server_name] = {
},
filetypes = { "java" };
root_dir = function(fname)
- return util.find_git_ancestor(fname)
- or util.root_pattern(unpack(root_files))(fname)
- or vim.call('getcwd')
+ for _, patterns in ipairs(root_files) do
+ local root = util.root_pattern(unpack(patterns))(fname)
+ if root then return root end
+ end
+ return vim.fn.getcwd()
end;
init_options = {
workspace = path.join { vim.loop.os_homedir(), "workspace" };
@@ -81,7 +100,8 @@ configs[server_name] = {
end
handlers['textDocument/codeAction'](a, b, actions)
- end
+ end;
+ ['language/status'] = vim.schedule_wrap(on_language_status)
};
};
docs = {