diff --git a/lazy-lock.json b/lazy-lock.json index 02aceab..abaf2df 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,15 +1,18 @@ { "LuaSnip": { "branch": "master", "commit": "8ae1dedd988eb56441b7858bd1e8554dfadaa46d" }, "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, + "conform.nvim": { "branch": "master", "commit": "75e7c5c7eb5fbd53f8b12dc420b31ec70770b231" }, "hardtime.nvim": { "branch": "main", "commit": "4ba3be553fa0b713c7b817f6d201b07d282accf3" }, "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "56e435e09f8729af2d41973e81a0db440f8fe9c9" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "8b70e7f1e0a4119c1234c3bde4a01c241cabcc74" }, "mason.nvim": { "branch": "main", "commit": "a09da6ac634926a299dd439da08bdb547a8ca011" }, "neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" }, "nui.nvim": { "branch": "main", "commit": "80445d015d2b5f9af0d9e8bce63d303bc86eda8a" }, "nvim-autopairs": { "branch": "master", "commit": "9fd41181693dd4106b3e414a822bb6569924de81" }, "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" }, + "nvim-lint": { "branch": "master", "commit": "8df53b5dde8ea80f0a039775777eae6648a10229" }, "nvim-lspconfig": { "branch": "master", "commit": "ce0e625df61be77abe1340fbc9afe9ad39b31dd8" }, "nvim-treesitter": { "branch": "master", "commit": "65ef62092ef997d2ecf68ede01a0afbda17808c3" }, "nvim-treesitter-context": { "branch": "master", "commit": "652ec514d6ba8bc4a3c2de76c855fe668e2c7196" }, diff --git a/lua/plugins/lint.lua b/lua/plugins/lint.lua new file mode 100644 index 0000000..2d279dd --- /dev/null +++ b/lua/plugins/lint.lua @@ -0,0 +1,26 @@ +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" }, + } + + 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 + }) + end +} diff --git a/lua/plugins/lsp-config.lua b/lua/plugins/lsp-config.lua index f418bac..a0b1eed 100644 --- a/lua/plugins/lsp-config.lua +++ b/lua/plugins/lsp-config.lua @@ -2,14 +2,14 @@ return { { "williamboman/mason.nvim", config = function() - require("mason").setup() + require("mason").setup() end }, { "williamboman/mason-lspconfig.nvim", config = function() require("mason-lspconfig").setup({ - ensure_installed = { "lua_ls", "tsserver", "eslint" } + ensure_installed = { "lua_ls", "tsserver" } }) end }, @@ -27,21 +27,50 @@ return { capabilities = capabilities }) - -- Runs :EslintFixAll when saving - lspconfig.eslint.setup({ - on_attach = function(_, bufnr) - vim.api.nvim_create_autocmd("BufWritePre", { - buffer = bufnr, - command = "EslintFixAll", - }) - end - }) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { desc = "Go to definition" }) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, { desc = "Go to implementation" }) vim.keymap.set('n', 'K', vim.lsp.buf.hover, { desc = "Show signature" }) vim.keymap.set('n', 'f', vim.lsp.buf.format, { desc = "Format buffer" }) vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, { desc = "View code actions" }) end + }, + { + "WhoIsSethDaniel/mason-tool-installer.nvim", + config = function() + local mason_tool_installer = require("mason-tool-installer") + + mason_tool_installer.setup({ + ensure_installed = { + "prettierd", + "eslint_d", + }, + automatic_installation = true + }) + end + }, + { + "stevearc/conform.nvim", + opts = { + formatters_by_ft = { + lua = { "stylua" }, + javascript = { "eslint_d" }, + javascriptreact = { "eslint_d" }, + json = { "prettierd" }, + jsonc = { "prettierd" }, + yaml = { "prettierd" }, + typescript = { "eslint_d" }, + typescriptreact = { "eslint_d" }, + html = { "prettierd" }, + ejs = { "prettierd" }, + css = { "prettierd" }, + scss = { "prettierd" }, + graphql = { "prettierd" }, + markdown = { "prettierd" }, + ["_"] = { "trim_whitespace" }, + }, + format_on_save = { + lsp_fallback = true, + }, + }, } }