From e670309162168c0826a10d1b9864cd36f6451d66 Mon Sep 17 00:00:00 2001 From: aminnairi <18418459+aminnairi@users.noreply.github.com> Date: Mon, 27 Nov 2023 23:29:36 +0100 Subject: [PATCH] added configuration for nvim lint & nvim conform --- nvim/init.lua | 170 +++++++++++++++++++++++++++----------------------- 1 file changed, 92 insertions(+), 78 deletions(-) diff --git a/nvim/init.lua b/nvim/init.lua index 5548cd7..5e2661c 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -178,7 +178,7 @@ require("lazy").setup({ }, { "williamboman/mason.nvim", - opts = {}, + opts = {} }, { "williamboman/mason-lspconfig.nvim", @@ -192,7 +192,9 @@ require("lazy").setup({ "volar", "cssls", "cssmodules_ls", - "prismals" + "prismals", + "yamlls", + "marksman" }, }, }, @@ -353,11 +355,7 @@ require("lazy").setup({ lspconfig.volar.setup({ capabilities = capabilities, filetypes = { - "typescript", - "javascript", - "javascriptreact", - "typescriptreact", - "vue", + "vue" }, }) @@ -382,97 +380,113 @@ require("lazy").setup({ }) lspconfig.prismals.setup({ + filetypes = { + "prisma" + }, capabilities = capabilities }) + + lspconfig.yamlls.setup({ + capabilities = capabilities, + filetypes = { + "yaml" + }, + }) + + lspconfig.marksman.setup({ + capabilities = capabilities, + filetypes = { + "markdown" + } + }) end, }, { - "jay-babu/mason-null-ls.nvim", + "WhoIsSethDaniel/mason-tool-installer.nvim", dependencies = { "williamboman/mason.nvim", }, opts = { ensure_installed = { "stylua", - "eslint", + "luacheck", "stylelint", - "prisma" + "shellcheck", + "rustfmt", + "phpcbf", + "phpstan", + "jq", + "jsonlint", + "htmlbeautifier", + "eslint_d", + "blade-formatter", + "markdownlint", + "yamllint", + "ansible-lint" }, - }, + auto_update = true, + run_on_start = true, + } }, { - "jose-elias-alvarez/null-ls.nvim", - event = "VeryLazy", + "stevearc/conform.nvim", dependencies = { - "jay-babu/mason-null-ls.nvim", + "WhoIsSethDaniel/mason-tool-installer.nvim", }, - config = function() - local null_ls = require("null-ls") + events = { "BufReadPre", "BufNewFile" }, + opts = { + formatters_by_ft = { + lua = { "stylua" }, + css = { "stylelint" }, + sh = { "shellcheck" }, + rust = { "rustfmt" }, + php = { "php_cs_fixer", "phpcbf" }, + json = { "jq" }, + html = { "htmlbeautifier" }, + javascript = { "eslint" }, + typescript = { "eslint" }, + javascriptreact = { "eslint" }, + typescriptreact = { "eslint" }, + vue = { "eslint" }, + blade = { "blade-formatter" }, + yaml = { "ansible_lint" } + } + } + }, + { + "mfussenegger/nvim-lint", + dependencies = { + "WhoIsSethDaniel/mason-tool-installer.nvim", + }, + events = { "BufReadPre", "BufWritePost" }, + init = function() + local lint = require("lint") - null_ls.setup({ - sources = { - null_ls.builtins.formatting.stylua.with({ - filetypes = { - "lua", - }, - }), - -- ESLint - null_ls.builtins.formatting.eslint.with({ - filetypes = { - "javascript", - "typescript", - "javascriptreact", - "typescriptreact", - "tsx", - "vue", - }, - }), - null_ls.builtins.diagnostics.eslint.with({ - filetypes = { - "javascript", - "typescript", - "javascriptreact", - "typescriptreact", - "tsx", - "vue", - }, - }), - null_ls.builtins.code_actions.eslint.with({ - filetypes = { - "javascript", - "typescript", - "javascriptreact", - "typescriptreact", - "tsx", - "vue", - }, - }), - -- StyleLint - null_ls.builtins.diagnostics.stylelint.with({ - filetypes = { - "scss", - "less", - "css", - "sass", - }, - }), - null_ls.builtins.formatting.stylelint.with({ - filetypes = { - "scss", - "less", - "css", - "sass", - }, - }), - -- prisma - null_ls.builtins.formatting.prismaFmt.with({ - filetypes = { - "prisma" - } - }) - }, + vim.api.nvim_create_autocmd({ "TextChanged", "TextChangedI", "BufEnter", "BufReadPre", "BufWritePost", "CursorHold", "CursorHoldI" }, { + callback = function() + lint.try_lint() + end, }) end, + config = function() + local lint = require("lint") + + lint.linter_by_ft = { + lua = { "luacheck" }, + javascript = { "eslint" }, + typescript = { "eslint" }, + javascriptreact = { "eslint" }, + typescriptreact = { "eslint" }, + vue = { "eslint" }, + sh = { "shellcheck" }, + fish = { "fish" }, + json = { "jsonlint", }, + markdown = { "markdownlint" }, + php = { "php", "phpcs", "phpstan" }, + css = { "stylelint" }, + yaml = { "yamllint" } + } + end }, { "nvim-treesitter/nvim-treesitter",