From 0c13ad1880d68bdebcfdb9fddddf14dd4c004933 Mon Sep 17 00:00:00 2001 From: David Ward Date: Sat, 21 Jan 2023 00:55:27 -0500 Subject: fix(drools-lsp): move improper client config location and improve config processing (#2411) Signed-off-by: David Ward Signed-off-by: David Ward --- lua/lspconfig/server_configurations/drools_lsp.lua | 79 +++++++++++----------- 1 file changed, 38 insertions(+), 41 deletions(-) (limited to 'lua') 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', }, } ``` -- cgit v1.2.3-70-g09d2