aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorDavid Ward <errantepiphany@users.noreply.github.com>2023-01-21 00:55:27 -0500
committerGitHub <noreply@github.com>2023-01-21 13:55:27 +0800
commit0c13ad1880d68bdebcfdb9fddddf14dd4c004933 (patch)
tree125c7e07924772f34f5027c3cae7630eecbd256a /lua
parentdocs: update server_configurations.md (diff)
downloadnvim-lspconfig-0c13ad1880d68bdebcfdb9fddddf14dd4c004933.tar
nvim-lspconfig-0c13ad1880d68bdebcfdb9fddddf14dd4c004933.tar.gz
nvim-lspconfig-0c13ad1880d68bdebcfdb9fddddf14dd4c004933.tar.bz2
nvim-lspconfig-0c13ad1880d68bdebcfdb9fddddf14dd4c004933.tar.lz
nvim-lspconfig-0c13ad1880d68bdebcfdb9fddddf14dd4c004933.tar.xz
nvim-lspconfig-0c13ad1880d68bdebcfdb9fddddf14dd4c004933.tar.zst
nvim-lspconfig-0c13ad1880d68bdebcfdb9fddddf14dd4c004933.zip
fix(drools-lsp): move improper client config location and improve config processing (#2411)
Signed-off-by: David Ward <dward@redhat.com> Signed-off-by: David Ward <dward@redhat.com>
Diffstat (limited to 'lua')
-rw-r--r--lua/lspconfig/server_configurations/drools_lsp.lua79
1 files changed, 38 insertions, 41 deletions
diff --git a/lua/lspconfig/server_configurations/drools_lsp.lua b/lua/lspconfig/server_configurations/drools_lsp.lua
index eeaf2979..28290a87 100644
--- a/lua/lspconfig/server_configurations/drools_lsp.lua
+++ b/lua/lspconfig/server_configurations/drools_lsp.lua
@@ -1,15 +1,37 @@
local util = require 'lspconfig.util'
-local get = function(config, section, key)
- return vim.tbl_get(config.settings, section, key) and config.settings[section][key] or nil
+local function get_java_bin(config)
+ local java_bin = vim.tbl_get(config, 'drools', 'java', 'bin')
+ if not java_bin then
+ java_bin = vim.env.JAVA_HOME and util.path.join(vim.env.JAVA_HOME, 'bin', 'java') or 'java'
+ if vim.fn.has 'win32' == 1 then
+ java_bin = java_bin .. '.exe'
+ end
+ end
+ return java_bin
+end
+
+local function get_java_opts(config)
+ local java_opts = vim.tbl_get(config, 'drools', 'java', 'opts')
+ return java_opts and java_opts or {}
+end
+
+local function get_jar(config)
+ local jar = vim.tbl_get(config, 'drools', 'jar')
+ return jar and jar or 'drools-lsp-server-jar-with-dependencies.jar'
end
-local get_java_bin = function()
- local java_bin = vim.env.JAVA_HOME and util.path.join(vim.env.JAVA_HOME, 'bin', 'java') or 'java'
- if vim.fn.has 'win32' == 1 then
- java_bin = java_bin .. '.exe'
+local function get_cmd(config)
+ local cmd = vim.tbl_get(config, 'cmd')
+ if not cmd then
+ cmd = { get_java_bin(config) }
+ for _, o in ipairs(get_java_opts(config)) do
+ table.insert(cmd, o)
+ end
+ ---@diagnostic disable-next-line:missing-parameter
+ vim.list_extend(cmd, { '-jar', get_jar(config) })
end
- return java_bin
+ return cmd
end
return {
@@ -17,19 +39,8 @@ return {
filetypes = { 'drools' },
root_dir = util.find_git_ancestor(),
single_file_support = true,
- on_new_config = function(config)
- if not config.cmd then
- local java_bin = get(config, 'java', 'bin') or get_java_bin()
- local java_opts = get(config, 'java', 'opts') or {}
- local drools_jar = get(config, 'drools', 'jar') or 'drools-lsp-server-jar-with-dependencies.jar'
-
- config.cmd = { java_bin }
- for _, o in ipairs(java_opts) do
- table.insert(config.cmd, o)
- end
- --- @diagnostic disable-next-line:missing-parameter
- vim.list_extend(config.cmd, { '-cp', drools_jar, 'org.drools.lsp.server.Main' })
- end
+ on_new_config = function(new_config)
+ new_config.cmd = get_cmd(new_config)
end,
},
docs = {
@@ -44,33 +55,19 @@ Configuration information:
```lua
-- Option 1) Specify the entire command:
require('lspconfig').drools_lsp.setup {
- cmd = {
- '/path/to/java',
- '-cp',
- '/path/to/drools-lsp-server-jar-with-dependencies.jar',
- 'org.drools.lsp.server.Main',
- },
+ cmd = { '/path/to/java', '-jar', '/path/to/drools-lsp-server-jar-with-dependencies.jar' },
}
--- Option 2) Specify just the jar location (the JAVA_HOME environment variable will be respected):
+-- Option 2) Specify just the jar path (the JAVA_HOME environment variable will be respected if present):
require('lspconfig').drools_lsp.setup {
- settings = {
- drools = {
- jar = '/path/to/drools-lsp-server-jar-with-dependencies.jar',
- },
- },
+ drools = { jar = '/path/to/drools-lsp-server-jar-with-dependencies.jar' },
}
--- Option 3) Specify the jar location plus the java bin path and/or java opts:
+-- Option 3) Specify the java bin and/or java opts in addition to the jar path:
require('lspconfig').drools_lsp.setup {
- settings = {
- java = {
- bin = '/path/to/java',
- opts = { '-Xmx500m' },
- },
- drools = {
- jar = '/path/to/drools-lsp-server-jar-with-dependencies.jar',
- },
+ drools = {
+ java { bin = '/path/to/java', opts = { '-Xmx100m' } },
+ jar = '/path/to/drools-lsp-server-jar-with-dependencies.jar',
},
}
```