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