From 2e76dd1cab962b2e117571b160245e82a4ff2651 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 20 Sep 2023 19:58:35 -0300 Subject: [PATCH] add linter and formatting support --- config/nvim/lua/aleidk/IDE/init.lua | 1 - config/nvim/lua/aleidk/IDE/null-ls.lua | 38 -------------------- config/nvim/lua/aleidk/plugins/formatter.lua | 22 ++++++++++++ config/nvim/lua/aleidk/plugins/linters.lua | 19 ++++++++++ config/nvim/lua/aleidk/plugins/lsp.lua | 2 +- config/nvim/lua/aleidk/plugins/mason.lua | 9 +++++ 6 files changed, 51 insertions(+), 40 deletions(-) delete mode 100644 config/nvim/lua/aleidk/IDE/null-ls.lua create mode 100644 config/nvim/lua/aleidk/plugins/formatter.lua create mode 100644 config/nvim/lua/aleidk/plugins/linters.lua create mode 100644 config/nvim/lua/aleidk/plugins/mason.lua diff --git a/config/nvim/lua/aleidk/IDE/init.lua b/config/nvim/lua/aleidk/IDE/init.lua index d3ac6f2..4a64e65 100644 --- a/config/nvim/lua/aleidk/IDE/init.lua +++ b/config/nvim/lua/aleidk/IDE/init.lua @@ -1,2 +1 @@ require("aleidk.IDE.completion") -require("aleidk.IDE.null-ls") diff --git a/config/nvim/lua/aleidk/IDE/null-ls.lua b/config/nvim/lua/aleidk/IDE/null-ls.lua deleted file mode 100644 index 28f1981..0000000 --- a/config/nvim/lua/aleidk/IDE/null-ls.lua +++ /dev/null @@ -1,38 +0,0 @@ --- Linter and formatter configuration - -require("mason-null-ls").setup({ - handlers = {}, -- this make mason-null-ls to auto setup handlers - ensure_installed = { - "blade_formatter", - "blue", - "eslint_d", - "fixjson", - "gitlint", - "intelephense", - "markdownlint", - "php-cs-fixer", - "prettierd", - "shellcheck", - "shfmt", - "sql-formatter", - "stylua", - "yamlint", - }, -}) - -local null_ls = require("null-ls.builtins") - -require("null-ls").setup({ - sources = { - null_ls.formatting.prettierd.with({ - disabled_filetypes = { "markdown" }, - }), - - null_ls.formatting.phpcsfixer.with({ - extra_args = { - "--config", - "$HOME/.config/php-cs-fixer-conf.php", - }, - }), - }, -}) diff --git a/config/nvim/lua/aleidk/plugins/formatter.lua b/config/nvim/lua/aleidk/plugins/formatter.lua new file mode 100644 index 0000000..e6a6b9c --- /dev/null +++ b/config/nvim/lua/aleidk/plugins/formatter.lua @@ -0,0 +1,22 @@ +return { + "stevearc/conform.nvim", + opts = { + formatters_by_ft = { + -- Conform will run multiple formatters sequentially + lua = { "stylua" }, + python = { "black" }, + -- Use a sub-list to run only the first available formatter + javascript = { { "prettierd", "prettier" } }, + typescript = { { "prettierd", "prettier" } }, + javascriptreact = { { "prettierd", "prettier" } }, + typescriptreact = { { "prettierd", "prettier" } }, + -- Use the "_" filetype to run formatters on filetypes that don't + -- have other formatters configured. + ["_"] = { "trim_whitespace" }, + }, + format_on_save = { + timeout_ms = 500, + lsp_fallback = true, + }, + }, +} diff --git a/config/nvim/lua/aleidk/plugins/linters.lua b/config/nvim/lua/aleidk/plugins/linters.lua new file mode 100644 index 0000000..6e6b2b1 --- /dev/null +++ b/config/nvim/lua/aleidk/plugins/linters.lua @@ -0,0 +1,19 @@ +return { + "mfussenegger/nvim-lint", + event = "VeryLazy", + config = function() + require("lint").linters_by_ft = { + javascript = { "eslint_d" }, + typescript = { "eslint_d" }, + javascriptreact = { "eslint_d" }, + typescriptreact = { "eslint_d" }, + -- astro = { "eslint_d" }, + } + + vim.api.nvim_create_autocmd({ "BufWritePost" }, { + callback = function() + require("lint").try_lint() + end, + }) + end, +} diff --git a/config/nvim/lua/aleidk/plugins/lsp.lua b/config/nvim/lua/aleidk/plugins/lsp.lua index 0014afc..a7ae31d 100644 --- a/config/nvim/lua/aleidk/plugins/lsp.lua +++ b/config/nvim/lua/aleidk/plugins/lsp.lua @@ -3,7 +3,7 @@ return { "neovim/nvim-lspconfig", dependencies = { -- Automatically install LSPs to stdpath for neovim - { "williamboman/mason.nvim", config = true }, + { "williamboman/mason.nvim" }, "williamboman/mason-lspconfig.nvim", -- Useful status updates for LSP diff --git a/config/nvim/lua/aleidk/plugins/mason.lua b/config/nvim/lua/aleidk/plugins/mason.lua new file mode 100644 index 0000000..95a9775 --- /dev/null +++ b/config/nvim/lua/aleidk/plugins/mason.lua @@ -0,0 +1,9 @@ +return { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "typescript-language-server", + "eslint_d", + }, + }, +}