diff options
| author | HiPhish <hiphish@posteo.de> | 2020-09-29 18:16:52 +0200 |
|---|---|---|
| committer | HiPhish <hiphish@posteo.de> | 2021-01-30 00:17:00 +0100 |
| commit | 82286d9ddafac612fa4cc2547619cb6996df612b (patch) | |
| tree | 7f67d320a51f405b3cad503b31864a56fbafa2a6 /lua | |
| parent | JDT LS: add more root pattern files (diff) | |
| download | nvim-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.lua | 40 |
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 = { |
