diff --git a/flake.nix b/flake.nix index df57bf0..b055206 100644 --- a/flake.nix +++ b/flake.nix @@ -85,6 +85,7 @@ lua << EOF package.path = "${self}/?.lua;" .. package.path groovyls_cmd = { "${pkgs.jdk11}/bin/java", "-jar", "${pkgs.groovyls}/groovyls-all.jar" } + groovy_lsp_settings = { groovy = { classpath = { "${pkgs.groovy}/lib" } } } '' + pkgs.lib.readFile ./init.lua + '' diff --git a/init.lua b/init.lua index 7ca649e..76b27e2 100644 --- a/init.lua +++ b/init.lua @@ -12,7 +12,7 @@ require('pwnvim.options').gui() require('pwnvim.mappings') require('pwnvim.abbreviations') require('pwnvim.plugins').ui() -require('pwnvim.plugins').diagnostics(groovyls_cmd) -- groovyls_cmd is dynamically created by nix +require('pwnvim.plugins').diagnostics(groovyls_cmd, groovy_lsp_settings) -- groovyls_cmd is dynamically created by nix require('pwnvim.plugins').telescope() require('pwnvim.plugins').completions() require('pwnvim.plugins').notes() diff --git a/pwnvim/filetypes.lua b/pwnvim/filetypes.lua index 9632abf..4c24ccd 100644 --- a/pwnvim/filetypes.lua +++ b/pwnvim/filetypes.lua @@ -36,12 +36,18 @@ M.config = function() autocmd("FileType", { pattern = { "c", "ruby", "php", "php3", "perl", "python", "mason", "vim", "sh", "zsh", "scala", "javascript", - "javascriptreact", "typescript", "typescriptreact", "html", "svelte", "css", "nix", "terraform", "groovy", "java" }, + "javascriptreact", "typescript", "typescriptreact", "html", "svelte", "css", "nix", "terraform" }, callback = function() require('pwnvim.options').programming() end, group = filetypes }) autocmd("FileType", { pattern = { "lua", "xml" }, callback = function() require('pwnvim.filetypes').lua() end, group = filetypes }) + autocmd("FileType", + { + pattern = { "groovy", "Jenkinsfile", "java" }, + callback = function() require('pwnvim.filetypes').groovy() end, + group = filetypes + }) autocmd("FileType", { pattern = { "md", "markdown", "vimwiki" }, @@ -92,6 +98,11 @@ M.lua = function() require('pwnvim.options').twospaceindent() end +M.groovy = function() + require('pwnvim.options').programming() + require('pwnvim.options').fourspaceindent() +end + M.page = function() -- disable status bar -- handled in config -- map space to ctrl-f diff --git a/pwnvim/plugins.lua b/pwnvim/plugins.lua index c396023..c646a20 100644 --- a/pwnvim/plugins.lua +++ b/pwnvim/plugins.lua @@ -34,7 +34,7 @@ M.ui = function() end -- UI setup ----------------------- DIAGNOSTICS -------------------------------- -M.diagnostics = function(groovyls_cmd) +M.diagnostics = function(groovyls_cmd, groovy_lsp_settings) -- IMPORTANT: make sure to setup neodev BEFORE lspconfig require("neodev").setup({ -- help for neovim lua api @@ -352,9 +352,10 @@ M.diagnostics = function(groovyls_cmd) }, capabilities = capabilities } - lspconfig.terraformls.setup { on_attach = attached, capabilities = capabilities } -- terraform lsp - lspconfig.tflint.setup { on_attach = attached, capabilities = capabilities } -- terraform lsp - lspconfig.groovyls.setup { on_attach = attached, capabilities = capabilities, cmd = groovyls_cmd } -- groovy lsp + lspconfig.terraformls.setup { on_attach = attached, capabilities = capabilities } -- terraform lsp + lspconfig.tflint.setup { on_attach = attached, capabilities = capabilities } -- terraform lsp + lspconfig.groovyls.setup { on_attach = attached, capabilities = capabilities, cmd = groovyls_cmd, settings = + groovy_lsp_settings } -- groovy lsp require 'lspsaga'.init_lsp_saga({ use_saga_diagnostic_sign = not SimpleUI,