diff options
| author | David Ward <errantepiphany@users.noreply.github.com> | 2023-01-21 00:55:27 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-21 13:55:27 +0800 |
| commit | 0c13ad1880d68bdebcfdb9fddddf14dd4c004933 (patch) | |
| tree | 125c7e07924772f34f5027c3cae7630eecbd256a /lua | |
| parent | docs: update server_configurations.md (diff) | |
| download | nvim-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.lua | 79 |
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', }, } ``` |
