summaryrefslogtreecommitdiff
path: root/start/lspconfig-0.1.8/lua/lspconfig/server_configurations/drools_lsp.lua
diff options
context:
space:
mode:
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.lua81
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 ]]
+```
+]=],
+ },
+}