diff options
author | Michael Smith <mikesmiffy128@gmail.com> | 2024-07-15 20:05:47 +0100 |
---|---|---|
committer | Michael Smith <mikesmiffy128@gmail.com> | 2024-07-15 20:05:47 +0100 |
commit | 522d56557b00246286d803425751a4334f3a94a5 (patch) | |
tree | 23ca335a3526197c2a6327ce10bfd58411b0a609 /start/lspconfig-0.1.8/lua/lspconfig/server_configurations/drools_lsp.lua | |
parent | a7b72fc27edac2305dbf0af807981bd703835b25 (diff) |
indent-blankline is probably old because I've actually been using it for
ages, but I have a strict if-it-ain't-broke policy, so I'm not going to
update it.
lspconfig *was* broke though with nvim 0.10, so now it's fixed.
Diffstat (limited to 'start/lspconfig-0.1.8/lua/lspconfig/server_configurations/drools_lsp.lua')
-rw-r--r-- | start/lspconfig-0.1.8/lua/lspconfig/server_configurations/drools_lsp.lua | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/start/lspconfig-0.1.8/lua/lspconfig/server_configurations/drools_lsp.lua b/start/lspconfig-0.1.8/lua/lspconfig/server_configurations/drools_lsp.lua new file mode 100644 index 0000000..d5dd3cc --- /dev/null +++ b/start/lspconfig-0.1.8/lua/lspconfig/server_configurations/drools_lsp.lua @@ -0,0 +1,81 @@ +local util = require 'lspconfig.util' + +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 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 cmd +end + +return { + default_config = { + filetypes = { 'drools' }, + root_dir = util.find_git_ancestor, + single_file_support = true, + on_new_config = function(new_config) + new_config.cmd = get_cmd(new_config) + end, + }, + docs = { + description = [=[ +https://github.com/kiegroup/drools-lsp + +Language server for the [Drools Rule Language (DRL)](https://docs.drools.org/latest/drools-docs/docs-website/drools/language-reference/#con-drl_drl-rules). + +The `drools-lsp` server is a self-contained java jar file (`drools-lsp-server-jar-with-dependencies.jar`), and can be downloaded from [https://github.com/kiegroup/drools-lsp/releases/](https://github.com/kiegroup/drools-lsp/releases/). + +Configuration information: +```lua +-- Option 1) Specify the entire command: +require('lspconfig').drools_lsp.setup { + cmd = { '/path/to/java', '-jar', '/path/to/drools-lsp-server-jar-with-dependencies.jar' }, +} + +-- Option 2) Specify just the jar path (the JAVA_HOME environment variable will be respected if present): +require('lspconfig').drools_lsp.setup { + drools = { jar = '/path/to/drools-lsp-server-jar-with-dependencies.jar' }, +} + +-- Option 3) Specify the java bin and/or java opts in addition to the jar path: +require('lspconfig').drools_lsp.setup { + drools = { + java = { bin = '/path/to/java', opts = { '-Xmx100m' } }, + jar = '/path/to/drools-lsp-server-jar-with-dependencies.jar', + }, +} +``` + +Neovim does not yet have automatic detection for the `drools` filetype, but it can be added with: +```lua +vim.cmd [[ autocmd BufNewFile,BufRead *.drl set filetype=drools ]] +``` +]=], + }, +} |