diff --git a/.config/nvim/lua/plugins/conform.lua b/.config/nvim/lua/plugins/conform.lua index 4b31e027..c12b8a75 100644 --- a/.config/nvim/lua/plugins/conform.lua +++ b/.config/nvim/lua/plugins/conform.lua @@ -1,39 +1,11 @@ return { - { - "stevearc/conform.nvim", - keys = { - { - "cic", - "ConformInfo", - mode = { "n", "v" }, - desc = "Conform Info", - }, - }, - opts = { - formatters_by_ft = { - lua = { "stylua" }, - fish = { "fish_indent" }, - sh = { "shfmt", "shellharden" }, - python = { "isort", "black" }, - bash = { "shfmt", "shellharden" }, - javascript = { { "prettierd", "prettier", "rustywind" } }, - javascriptreact = { { "prettierd", "prettier", "rustywind" } }, - typescript = { { "prettierd", "prettier", "rustywind" } }, - typescriptreact = { { "prettierd", "prettier", "rustywind" } }, - vue = { { "prettierd", "prettier", "rustywind" } }, - html = { { "prettierd", "prettier", "rustywind", "stylelint" } }, - rust = { "rusfmt" }, - go = { "gofumpt", "goimports" }, - sass = { "stylelint" }, - css = { { "prettierd", "prettier", "stylelint" } }, - scss = { { "prettierd", "prettier", "stylelint" } }, - less = { { "prettierd", "prettier", "stylelint" } }, - markdown = { { "prettierd", "prettier" } }, - toml = { "taplo" }, - sql = { "sqlfmt" }, - mysql = { "sqlfmt" }, - plsql = { "sqlfmt" }, - }, + "stevearc/conform.nvim", + keys = { + { + "cic", + "ConformInfo", + mode = { "n", "v" }, + desc = "Conform Info", }, }, } diff --git a/.config/nvim/lua/plugins/extras/formatting/isort.lua b/.config/nvim/lua/plugins/extras/formatting/isort.lua new file mode 100644 index 00000000..c0218f1a --- /dev/null +++ b/.config/nvim/lua/plugins/extras/formatting/isort.lua @@ -0,0 +1,17 @@ +return { + { + "williamboman/mason.nvim", + opts = function(_, opts) + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "isort" }) + end, + }, + { + "stevearc/conform.nvim", + opts = function(_, opts) + opts.formatters_by_ft.python = opts.formatters_by_ft.python or {} + table.insert(opts.formatters_by_ft.python, "isort") + return opts + end, + }, +} diff --git a/.config/nvim/lua/plugins/extras/formatting/rustfmt.lua b/.config/nvim/lua/plugins/extras/formatting/rustfmt.lua new file mode 100644 index 00000000..5af05113 --- /dev/null +++ b/.config/nvim/lua/plugins/extras/formatting/rustfmt.lua @@ -0,0 +1,10 @@ +return { + { + "stevearc/conform.nvim", + opts = function(_, opts) + opts.formatters_by_ft.rust = opts.formatters_by_ft.rust or {} + table.insert(opts.formatters_by_ft.rust, "rustfmt") + return opts + end, + }, +} diff --git a/.config/nvim/lua/plugins/extras/formatting/rustywind.lua b/.config/nvim/lua/plugins/extras/formatting/rustywind.lua new file mode 100644 index 00000000..fe944c1b --- /dev/null +++ b/.config/nvim/lua/plugins/extras/formatting/rustywind.lua @@ -0,0 +1,34 @@ +return { + { + "williamboman/mason.nvim", + opts = function(_, opts) + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "rustywind" }) + end, + }, + { + "stevearc/conform.nvim", + opts = function(_, opts) + --- Extend the conform plugin config and add given formatters + ---@param tbl table Table of filetype to formatters mappings + local function add_formatters(tbl) + for ft, formatters in pairs(tbl) do + if opts.formatters_by_ft[ft] == nil then + opts.formatters_by_ft[ft] = formatters + else + vim.list_extend(opts.formatters_by_ft[ft], formatters) + end + end + end + + add_formatters({ + ["javascript"] = { "rustywind" }, + ["javascriptreact"] = { "rustywind" }, + ["typescript"] = { "rustywind" }, + ["typescriptreact"] = { "rustywind" }, + ["vue"] = { "rustywind" }, + ["html"] = { "rustywind" }, + }) + end, + }, +} diff --git a/.config/nvim/lua/plugins/extras/formatting/shellharden.lua b/.config/nvim/lua/plugins/extras/formatting/shellharden.lua new file mode 100644 index 00000000..14df16d5 --- /dev/null +++ b/.config/nvim/lua/plugins/extras/formatting/shellharden.lua @@ -0,0 +1,17 @@ +return { + { + "williamboman/mason.nvim", + opts = function(_, opts) + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "shellharden" }) + end, + }, + { + "stevearc/conform.nvim", + opts = function(_, opts) + opts.formatters_by_ft.bash = opts.formatters_by_ft.bash or {} + table.insert(opts.formatters_by_ft.bash, "shellharden") + return opts + end, + }, +} diff --git a/.config/nvim/lua/plugins/extras/formatting/sqlfmt.lua b/.config/nvim/lua/plugins/extras/formatting/sqlfmt.lua new file mode 100644 index 00000000..2a279ba3 --- /dev/null +++ b/.config/nvim/lua/plugins/extras/formatting/sqlfmt.lua @@ -0,0 +1,31 @@ +return { + { + "williamboman/mason.nvim", + opts = function(_, opts) + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "sqlfmt" }) + end, + }, + { + "stevearc/conform.nvim", + opts = function(_, opts) + --- Extend the conform plugin config and add given formatters + ---@param tbl table Table of filetype to formatters mappings + local function add_formatters(tbl) + for ft, formatters in pairs(tbl) do + if opts.formatters_by_ft[ft] == nil then + opts.formatters_by_ft[ft] = formatters + else + vim.list_extend(opts.formatters_by_ft[ft], formatters) + end + end + end + + add_formatters({ + ["sql"] = { "sqlfmt" }, + ["plsql"] = { "sqlfmt" }, + ["mysql"] = { "sqlfmt" }, + }) + end, + }, +} diff --git a/.config/nvim/lua/plugins/extras/lang/bash.lua b/.config/nvim/lua/plugins/extras/lang/bash.lua index 29600f3d..5f573d53 100644 --- a/.config/nvim/lua/plugins/extras/lang/bash.lua +++ b/.config/nvim/lua/plugins/extras/lang/bash.lua @@ -19,7 +19,7 @@ return { "williamboman/mason.nvim", opts = function(_, opts) opts.ensure_installed = opts.ensure_installed or {} - vim.list_extend(opts.ensure_installed, { "bash-language-server", "shfmt", "shellharden" }) + vim.list_extend(opts.ensure_installed, { "bash-language-server" }) end, }, } diff --git a/.config/nvim/lua/plugins/extras/lang/sql.lua b/.config/nvim/lua/plugins/extras/lang/sql.lua index 78589b2d..a417c68e 100644 --- a/.config/nvim/lua/plugins/extras/lang/sql.lua +++ b/.config/nvim/lua/plugins/extras/lang/sql.lua @@ -73,7 +73,7 @@ return { "williamboman/mason.nvim", opts = function(_, opts) opts.ensure_installed = opts.ensure_installed or {} - vim.list_extend(opts.ensure_installed, { "sqlfmt", "sqlls" }) + vim.list_extend(opts.ensure_installed, { "sqlls" }) end, }, { diff --git a/.config/nvim/lua/plugins/extras/linting/pylint.lua b/.config/nvim/lua/plugins/extras/linting/pylint.lua new file mode 100644 index 00000000..c854d17c --- /dev/null +++ b/.config/nvim/lua/plugins/extras/linting/pylint.lua @@ -0,0 +1,17 @@ +return { + { + "williamboman/mason.nvim", + opts = function(_, opts) + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "pylint" }) + end, + }, + { + "mfussenegger/nvim-lint", + opts = function(_, opts) + opts.linters_by_ft.python = opts.linters_by_ft.python or {} + table.insert(opts.linters_by_ft.python, "pylint") + return opts + end, + }, +} diff --git a/.config/nvim/lua/plugins/extras/linting/stylelint.lua b/.config/nvim/lua/plugins/extras/linting/stylelint.lua new file mode 100644 index 00000000..45473972 --- /dev/null +++ b/.config/nvim/lua/plugins/extras/linting/stylelint.lua @@ -0,0 +1,31 @@ +local stylelint = "stylelint" + +return { + { + "williamboman/mason.nvim", + opts = function(_, opts) + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { stylelint }) + end, + }, + { + "mfussenegger/nvim-lint", + opts = function(_, opts) + opts.linters_by_ft.html = opts.linters_by_ft.html or {} + table.insert(opts.linters_by_ft.html, stylelint) + + opts.linters_by_ft.css = opts.linters_by_ft.css or {} + table.insert(opts.linters_by_ft.css, stylelint) + + opts.linters_by_ft.scss = opts.linters_by_ft.scss or {} + table.insert(opts.linters_by_ft.scss, stylelint) + + opts.linters_by_ft.sass = opts.linters_by_ft.sass or {} + table.insert(opts.linters_by_ft.sass, stylelint) + + opts.linters_by_ft.less = opts.linters_by_ft.less or {} + table.insert(opts.linters_by_ft.less, stylelint) + return opts + end, + }, +} diff --git a/.config/nvim/lua/plugins/lint.lua b/.config/nvim/lua/plugins/lint.lua deleted file mode 100644 index 091dc12a..00000000 --- a/.config/nvim/lua/plugins/lint.lua +++ /dev/null @@ -1,19 +0,0 @@ -return { - { - "mfussenegger/nvim-lint", - event = "LazyFile", - opts = { - -- Event to trigger linters - events = { "BufWritePost", "BufReadPost", "InsertLeave" }, - linters_by_ft = { - fish = { "fish" }, - markdown = { "markdownlint" }, - -- python = { "pylint" }, - dockerfile = { "hadolint" }, - css = { "stylelint" }, - sass = { "stylelint" }, - scss = { "stylelint" }, - }, - }, - }, -}