nvim/lua/configs/null-ls.lua
2024-07-02 20:14:45 -04:00

56 lines
1.8 KiB
Lua

local null_ls = require "null-ls"
local virtual = os.getenv "VIRTUAL_ENV" or os.getenv "CONDA_PREFIX" or "/usr" -- TODO: windows
local opts = {
debug = true,
sources = {
null_ls.builtins.code_actions.refactoring,
-- null_ls.builtins.diagnostics.mypy.with {
-- extra_args = { "--python-executable", virtual .. "/bin/python3" },
-- },
-- null_ls.builtins.diagnostics.flake8.with {
-- extra_args = { "--select", "E,W,F", "--ignore", "E501,E402,E722,W503", "--max-line-length", "150" },
-- },
-- null_ls.builtins.formatting.autoflake,
-- null_ls.builtins.formatting.autopep8.with {
-- extra_args = { "--select", "E,W,F", "--ignore", "E501,E402,E722,W503", "--max-line-length", "150" },
-- },
-- Lua
null_ls.builtins.formatting.stylua,
-- CSS
null_ls.builtins.formatting.prettier,
-- Go
null_ls.builtins.formatting.gofumpt,
null_ls.builtins.formatting.goimports,
null_ls.builtins.code_actions.gomodifytags,
null_ls.builtins.code_actions.impl,
-- null_ls.builtins.diagnostics.revive,
null_ls.builtins.diagnostics.golangci_lint,
-- Docker
null_ls.builtins.diagnostics.hadolint,
--shell,
null_ls.builtins.formatting.shellharden,
-- web
require "none-ls.code_actions.eslint",
require "none-ls.diagnostics.eslint",
require "none-ls.formatting.eslint",
null_ls.builtins.formatting.stylelint,
},
-- autoformat on save
on_attach = function(client, bufnr)
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()
vim.lsp.buf.format { bufnr = bufnr }
end,
})
end
end,
}
return opts