diff options
| author | David Ward <errantepiphany@users.noreply.github.com> | 2023-01-12 23:58:40 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-13 12:58:40 +0800 |
| commit | 517b8ed1252c6ec1e3fb6a1f0967053f0b6948da (patch) | |
| tree | 9c42011588db5f728e8f18d4b9e1d2feb619e1a4 /lua | |
| parent | docs: update server_configurations.md (diff) | |
| download | nvim-lspconfig-517b8ed1252c6ec1e3fb6a1f0967053f0b6948da.tar nvim-lspconfig-517b8ed1252c6ec1e3fb6a1f0967053f0b6948da.tar.gz nvim-lspconfig-517b8ed1252c6ec1e3fb6a1f0967053f0b6948da.tar.bz2 nvim-lspconfig-517b8ed1252c6ec1e3fb6a1f0967053f0b6948da.tar.lz nvim-lspconfig-517b8ed1252c6ec1e3fb6a1f0967053f0b6948da.tar.xz nvim-lspconfig-517b8ed1252c6ec1e3fb6a1f0967053f0b6948da.tar.zst nvim-lspconfig-517b8ed1252c6ec1e3fb6a1f0967053f0b6948da.zip | |
feat: add drools-lsp support (#2394)
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 | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/lua/lspconfig/server_configurations/drools_lsp.lua b/lua/lspconfig/server_configurations/drools_lsp.lua new file mode 100644 index 00000000..eeaf2979 --- /dev/null +++ b/lua/lspconfig/server_configurations/drools_lsp.lua @@ -0,0 +1,84 @@ +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 +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' + end + return java_bin +end + +return { + default_config = { + 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 + 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', + '-cp', + '/path/to/drools-lsp-server-jar-with-dependencies.jar', + 'org.drools.lsp.server.Main', + }, +} + +-- Option 2) Specify just the jar location (the JAVA_HOME environment variable will be respected): +require('lspconfig').drools_lsp.setup { + settings = { + 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: +require('lspconfig').drools_lsp.setup { + settings = { + java = { + bin = '/path/to/java', + opts = { '-Xmx500m' }, + }, + drools = { + jar = '/path/to/drools-lsp-server-jar-with-dependencies.jar', + }, + }, +} +``` + +It is also recommended to set up automatic filetype detection for drools (`*.drl`) files, for example: +```vim +autocmd BufRead,BufNewFile *.drl set filetype=drools +``` +]], + }, +} |
