aboutsummaryrefslogtreecommitdiff
path: root/lua/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'lua/plugins')
-rw-r--r--lua/plugins/null-ls.lua250
1 files changed, 167 insertions, 83 deletions
diff --git a/lua/plugins/null-ls.lua b/lua/plugins/null-ls.lua
index 640ae0e..06dd45b 100644
--- a/lua/plugins/null-ls.lua
+++ b/lua/plugins/null-ls.lua
@@ -2,89 +2,173 @@
--
-- null-language-server i.e. a sort of language server which does not provide any services such as formatting and diagnostics you expect from a language server. Instead it will need to install corresponding external “sources” and then hook these sources into the neovim lsp client through null-ls.
--
-require("null-ls").setup({
- --debug = true,
- disabled_filetypes = { "PKGBUILD" },
- timeout_ms = 5000,
- async = true,
- debounce = 150,
- --log = {
- -- enable = true,
- -- level = 'warn',
- -- use_console = 'async',
- --},
- update_in_insert = false,
- --fallback_severity = vim.diagnostic.severity.ERROR,
- --log_level = "warn",
- --on_attach = nil,
- --on_init = nil,
- --on_exit = nil,
- sources = {
- --require("null-ls").builtins.formatting.shfmt, -- shell script formatting
- require("null-ls").builtins.diagnostics.dotenv_linter,
- --require("null-ls").builtins.diagnostics.editorconfig_checker,
- require("null-ls").builtins.formatting.shfmt.with({
- filetypes = { "bash", "zsh", "sh" },
- extra_args = { "-i", "2", "-ci" },
- }),
- require("null-ls").builtins.formatting.prettier, -- markdown formatting
- --require("null-ls").builtins.diagnostics.shellcheck, -- shell script diagnostics
- require("null-ls").builtins.diagnostics.shellcheck.with({
- diagnostic_config = {
- -- see :help vim.diagnostic.config()
- underline = true,
- virtual_text = false,
- signs = true,
- update_in_insert = false,
- severity_sort = true,
- },
- diagnostics_format = "[#{c}] #{m} (#{s})",
- -- this will run every time the source runs,
- -- so you should prefer caching results if possible
- }),
--- require("null-ls").builtins.formatting.stylua, -- lua formatting
--- require("null-ls").builtins.formatting.prettier.with({ -- markdown, html/js formatting
--- filetypes = { "html", "css", "javascript", "javascriptreact", "markdown", "json", "yaml" },
--- }),
--- require("null-ls").builtins.formatting.black,
--- require("null-ls").builtins.formatting.prettierd,
--- require("null-ls").builtins.diagnostics.cspell.with {
--- filetypes = { "python", "rust", "typescript" },
--- },
--- --require("null-ls").builtins.diagnostics.luacheck,
--- --require("null-ls").builtins.diagnostics.eslint,
--- --require("null-ls").builtins.diagnostics.eslint_d,
--- require("null-ls").builtins.diagnostics.mdl,
--- require("null-ls").builtins.diagnostics.vint,
--- require("null-ls").builtins.completion.spell,
+local null_ls = require "null-ls"
+local builtins = null_ls.builtins
+
+local eslint_opts = {
+ -- condition = function(utils)
+ -- return utils.root_has_file ".eslintrc.js" or utils.root_has_file ".eslintrc" or utils.root_has_file ".eslintrc.json"
+ -- end,
+ -- diagnostics_format = "#{m} [#{c}]",
+ prefer_local = true,
+}
+
+local sources = {
+ builtins.formatting.stylua,
+ builtins.formatting.shfmt.with({
+ filetypes = { "bash", "zsh", "sh" },
+ extra_args = { "-i", "2", "-ci" },
+ }),
+ builtins.formatting.shellharden,
+ builtins.formatting.trim_whitespace.with { filetypes = { "tmux", "teal", "zsh" } },
+ builtins.formatting.clang_format,
+ builtins.formatting.rustfmt,
+ builtins.formatting.sql_formatter,
+ builtins.formatting.prettierd.with {
+ filetypes = { "javascript", "javascriptreact", "typescript", "typescriptreact", "json", "yaml", "markdown", "html", "css", "scss", "less", "graphql", "vue", "svelte" },
+ condition = function(utils)
+ return utils.root_has_file ".prettierrc" or utils.root_has_file ".prettierrc.js" or utils.root_has_file ".prettierrc.json" or utils.root_has_file "prettier.config.js" or utils.root_has_file "prettier.config.cjs"
+ end,
+ },
+
+ builtins.diagnostics.dotenv_linter,
+ builtins.diagnostics.shellcheck.with({ -- shell script diagnostics
+ diagnostic_config = {
+ -- see :help vim.diagnostic.config()
+ underline = true,
+ virtual_text = false,
+ signs = true,
+ update_in_insert = false,
+ severity_sort = true,
+ },
+ diagnostics_format = "[#{c}] #{m} (#{s})",
+ -- this will run every time the source runs,
+ -- so you should prefer caching results if possible
+ }),
+ builtins.diagnostics.eslint_d.with(eslint_opts),
+ builtins.diagnostics.todo_comments,
+
+ builtins.code_actions.shellcheck, -- shell script code actions
+ builtins.code_actions.eslint_d.with(eslint_opts),
+ builtins.code_actions.gitsigns,
+ builtins.code_actions.gitrebase,
+ builtins.hover.dictionary,
+ builtins.hover.printenv,
+}
+
+local M = {}
+
+M.setup = function(on_attach)
+ local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
+
+ null_ls.setup {
+ sources = sources,
+ debug = false,
+ on_attach = function(client, bufnr)
+ on_attach(client, bufnr)
+ -- Format on save
+ -- vim.cmd [[autocmd BufWritePost <buffer> lua vim.lsp.buf.formatting()]]
+
+ -- if client.supports_method "textDocument/formatting" then
+ -- vim.api.nvim_clear_autocmds { group = augroup, buffer = bufnr }
+ -- vim.api.nvim_create_autocmd("BufWritePre", {
+ -- group = augroup,
+ -- buffer = bufnr,
+ -- callback = function()
+ -- -- on 0.8, you should use vim.lsp.buf.format({ bufnr = bufnr }) instead
+ -- vim.lsp.buf.format { bufnr = bufnr }
+ -- end,
+ -- })
+ -- end
+ end,
+ }
+end
+
+return M
+
+--require("null-ls").setup({
+-- --debug = true,
+-- disabled_filetypes = { "PKGBUILD" },
+-- timeout_ms = 5000,
+-- async = true,
+-- debounce = 150,
+-- --log = {
+-- -- enable = true,
+-- -- level = 'warn',
+-- -- use_console = 'async',
+-- --},
+-- update_in_insert = false,
+-- --fallback_severity = vim.diagnostic.severity.ERROR,
+-- --log_level = "warn",
+-- --on_attach = nil,
+-- --on_init = nil,
+-- --on_exit = nil,
+-- sources = {
+-- --require("null-ls").builtins.formatting.shfmt, -- shell script formatting
+-- require("null-ls").builtins.diagnostics.dotenv_linter,
+-- --require("null-ls").builtins.diagnostics.editorconfig_checker,
+-- require("null-ls").builtins.formatting.shfmt.with({
+-- filetypes = { "bash", "zsh", "sh" },
+-- extra_args = { "-i", "2", "-ci" },
+-- }),
+-- require("null-ls").builtins.formatting.prettier, -- markdown formatting
+-- --require("null-ls").builtins.diagnostics.shellcheck, -- shell script diagnostics
+-- require("null-ls").builtins.diagnostics.shellcheck.with({
+-- diagnostic_config = {
+-- -- see :help vim.diagnostic.config()
+-- underline = true,
+-- virtual_text = false,
+-- signs = true,
+-- update_in_insert = false,
+-- severity_sort = true,
+-- },
+-- diagnostics_format = "[#{c}] #{m} (#{s})",
+-- -- this will run every time the source runs,
+-- -- so you should prefer caching results if possible
+-- }),
+---- require("null-ls").builtins.formatting.stylua, -- lua formatting
+---- require("null-ls").builtins.formatting.prettier.with({ -- markdown, html/js formatting
+---- filetypes = { "html", "css", "javascript", "javascriptreact", "markdown", "json", "yaml" },
+---- }),
+---- require("null-ls").builtins.formatting.black,
+---- require("null-ls").builtins.formatting.prettierd,
+---- require("null-ls").builtins.diagnostics.cspell.with {
+---- filetypes = { "python", "rust", "typescript" },
+---- },
+---- --require("null-ls").builtins.diagnostics.luacheck,
+---- --require("null-ls").builtins.diagnostics.eslint,
+---- --require("null-ls").builtins.diagnostics.eslint_d,
+---- require("null-ls").builtins.diagnostics.mdl,
+---- require("null-ls").builtins.diagnostics.vint,
+---- require("null-ls").builtins.completion.spell,
+---- require("null-ls").builtins.formatting.clang_format,
+---- require("null-ls").builtins.formatting.rustfmt,
+---- require("null-ls").builtins.formatting.sql_formatter,
+---- --require("null-ls").builtins.formatting.google_java_format,
+---- require("null-ls").builtins.diagnostics.cppcheck,
+-- require("null-ls").builtins.formatting.shellharden,
+---- --require("null-ls").builtins.code_actions.eslint_d,
+-- require("null-ls").builtins.code_actions.shellcheck, -- shell script code actions
-- require("null-ls").builtins.formatting.clang_format,
-- require("null-ls").builtins.formatting.rustfmt,
+-- --require("null-ls").builtins.formatting.beautysh,
-- require("null-ls").builtins.formatting.sql_formatter,
--- --require("null-ls").builtins.formatting.google_java_format,
--- require("null-ls").builtins.diagnostics.cppcheck,
- require("null-ls").builtins.formatting.shellharden,
--- --require("null-ls").builtins.code_actions.eslint_d,
- require("null-ls").builtins.code_actions.shellcheck, -- shell script code actions
- require("null-ls").builtins.formatting.clang_format,
- require("null-ls").builtins.formatting.rustfmt,
- --require("null-ls").builtins.formatting.beautysh,
- require("null-ls").builtins.formatting.sql_formatter,
- require("null-ls").builtins.diagnostics.todo_comments,
- --require("null-ls").builtins.diagnostics.zsh,
- require("null-ls").builtins.hover.dictionary,
- require("null-ls").builtins.hover.printenv,
- },
- -- default_timeout = 5000,
- -- diagnostics_format = '[#{c}] #{m} (#{s})',
- -- fallback_severity = vim.diagnostic.severity.ERROR,
- -- log = {
- -- enable = true,
- -- level = 'warn',
- -- use_console = 'async',
- -- },
- --on_attach = nil,
- --on_init = nil,
- --on_exit = nil,
- --update_in_insert = false,
- --update_in_leave = false,
-})
+-- require("null-ls").builtins.diagnostics.todo_comments,
+-- --require("null-ls").builtins.diagnostics.zsh,
+-- require("null-ls").builtins.hover.dictionary,
+-- require("null-ls").builtins.hover.printenv,
+-- },
+-- -- default_timeout = 5000,
+-- -- diagnostics_format = '[#{c}] #{m} (#{s})',
+-- -- fallback_severity = vim.diagnostic.severity.ERROR,
+-- -- log = {
+-- -- enable = true,
+-- -- level = 'warn',
+-- -- use_console = 'async',
+-- -- },
+-- --on_attach = nil,
+-- --on_init = nil,
+-- --on_exit = nil,
+-- --update_in_insert = false,
+-- --update_in_leave = false,
+--})