replace null-ls with conform and nvim-lint

This commit is contained in:
Neeraj A 2024-05-22 18:31:39 +05:30
parent 7cca958858
commit 848408a2a4
3 changed files with 68 additions and 60 deletions

View File

@ -0,0 +1,39 @@
return {
"stevearc/conform.nvim",
event = { "BufReadPre", "BufNewFile" },
config = function()
local conform = require("conform")
conform.setup({
formatters_by_ft = {
javascript = { "prettierd" },
typescript = { "prettierd" },
javascriptreact = { "prettierd" },
typescriptreact = { "prettierd" },
svelte = { "prettierd" },
css = { "prettierd" },
html = { "prettierd" },
json = { "prettierd" },
yaml = { "prettierd" },
markdown = { "prettierd" },
graphql = { "prettierd" },
liquid = { "prettierd" },
lua = { "stylua" },
python = { "isort", "black" },
},
format_on_save = {
lsp_fallback = true,
async = false,
timeout_ms = 1000,
},
})
vim.keymap.set({ "n", "v" }, "<leader>mp", function()
conform.format({
lsp_fallback = true,
async = false,
timeout_ms = 1000,
})
end, { desc = "Format file or range (in visual mode)" })
end,
}

View File

@ -0,0 +1,29 @@
return {
"mfussenegger/nvim-lint",
event = { "BufReadPre", "BufNewFile" },
config = function()
local lint = require("lint")
lint.linters_by_ft = {
javascript = { "eslint_d" },
typescript = { "eslint_d" },
javascriptreact = { "eslint_d" },
typescriptreact = { "eslint_d" },
svelte = { "eslint_d" },
python = { "pylint" },
}
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
group = lint_augroup,
callback = function()
lint.try_lint()
end,
})
vim.keymap.set("n", "<leader>l", function()
lint.try_lint()
end, { desc = "Trigger linting for current file" })
end,
}

View File

@ -1,60 +0,0 @@
return {
"jose-elias-alvarez/null-ls.nvim",
dependencies = {"nvim-lua/plenary.nvim"},
config = function()
local null_ls = require("null-ls")
local formatting = null_ls.builtins.formatting
local diagnostics = null_ls.builtins.diagnostics
local codeActions = null_ls.builtins.code_actions
local sources = {
formatting.eslint_d, formatting.prettierd.with({
env = {
PRETTIERD_DEFAULT_CONFIG = vim.fn
.expand "~/.config/nvim/utils/linter-config/.prettierrc.js"
}
}), -- formatting.prettier
-- .with({extra_args = {'--single-quote', '--tab-width 2', '--arrow-parens avoid'}}),
formatting.lua_format.with({
extra_args = {
'--no-keep-simple-function-one-line', '--no-break-after-operator', '--column-limit=100',
'--break-after-table-lb', '--indent-width=2'
}
}), diagnostics.eslint_d.with({diagnostics_format = "[#{c}] #{m} (#{s})"}),
codeActions.eslint_d
}
local lsp_formatting = function(bufnr)
vim.lsp.buf.format({
-- async = true,
filter = function(client)
-- apply whatever logic you want (in this example, we'll only use null-ls)
return client.name == "null-ls"
end,
bufnr = bufnr
})
end
-- if you want to set up formatting on save, you can use this as a callback
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
local on_attach = function(client, bufnr)
-- if client.name == "tsserver" or client.name == "cssls" or client.name == "html" then
-- client.server_capabilities.documentFormattingProvider = false -- 0.8 and later
-- end
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()
lsp_formatting(bufnr)
end
})
end
end
null_ls.setup({sources = sources, debug = true, on_attach = on_attach})
end
}