diff --git a/Containerfile b/Containerfile index d98be8d..7123e4c 100644 --- a/Containerfile +++ b/Containerfile @@ -43,7 +43,8 @@ ENV MASON_PKGS=" \ yaml-language-server \ markdownlint \ ansible-language-server \ - ansible-lint" + ansible-lint \ + yamlfmt" ENV MASON_PKGS_NO_ARM="lemminx helm-ls lua-language-server" diff --git a/lua/lazy-load.lua b/lua/lazy-load.lua index a39d8f3..6cfe164 100644 --- a/lua/lazy-load.lua +++ b/lua/lazy-load.lua @@ -33,6 +33,17 @@ require("lazy").setup({ opts = {}, priority = 200 }, + { + "stevearc/conform.nvim", + --event = { "BufWritePre" }, + cmd = { "ConformInfo" }, + -- triggering is in lspconfig conf since it is the same key + opts = require("plugins.conform").opts, + init = function() + -- If you want the formatexpr, here is the place to set it + vim.o.formatexpr = "v:lua.require'conform'.formatexpr()" + end, + }, -- mason-lspconfig might need disabling on first run { 'williamboman/mason-lspconfig.nvim', diff --git a/lua/plugins/conform.lua b/lua/plugins/conform.lua new file mode 100644 index 0000000..20f005c --- /dev/null +++ b/lua/plugins/conform.lua @@ -0,0 +1,26 @@ +return { + -- This will provide type hinting with LuaLS + ---@module "conform" + ---@type conform.setupOpts + opts = { + -- Define your formatters + formatters_by_ft = { + yaml = { "yamlfmt" }, + --lua = { "stylua" }, + --python = { "isort", "black" }, + --javascript = { "prettierd", "prettier", stop_after_first = true }, + }, + -- Set default options + default_format_opts = { + lsp_format = "fallback", + }, + -- Set up format-on-save + --format_on_save = { timeout_ms = 500 }, + -- Customize formatters + formatters = { + shfmt = { + prepend_args = { "-i", "2" }, + }, + }, + } +} diff --git a/lua/plugins/nvim-lspconfig.lua b/lua/plugins/nvim-lspconfig.lua index d25af94..3891405 100644 --- a/lua/plugins/nvim-lspconfig.lua +++ b/lua/plugins/nvim-lspconfig.lua @@ -32,7 +32,10 @@ return { vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, bufopts) + vim.keymap.set('n', 'f', function() + vim.lsp.buf.format { async = true } + require("conform").format({ async = true }) + end, bufopts) end local capabilities = require('cmp_nvim_lsp').default_capabilities() @@ -42,71 +45,71 @@ return { -- attaching all lsp servers, order matters (for example in autocompletion) ----------------- --require 'lspconfig'.pylsp.setup { - --on_attach = on_attach, - --capabilities = capabilities - --, settings = { - --pylsp = { - --plugins = { - --rope_autoimport = { enabled = true, memory = true }, - --rope_completion = { enabled = false, eager = false }, - --rope = { - --ropeFolder = nil - --}, - --jedi_completion = { - --enabled = false, - --include_params = true, - --include_class_objects = true, - --include_function_objects = true, - --fuzzy = true, - --eager = true, + --on_attach = on_attach, + --capabilities = capabilities + --, settings = { + --pylsp = { + --plugins = { + --rope_autoimport = { enabled = true, memory = true }, + --rope_completion = { enabled = false, eager = false }, + --rope = { + --ropeFolder = nil + --}, + --jedi_completion = { + --enabled = false, + --include_params = true, + --include_class_objects = true, + --include_function_objects = true, + --fuzzy = true, + --eager = true, - --}, - --jedi_definition = { - --enabled = false, - --}, - --mccabe = { - --enabled = false - --}, - --jedi_hover = { enabled = false }, - --jedi_references = { enabled = false }, - --jedi_signature_help = { enabled = false }, - --jedi_symbols = { enabled = false }, - --ruff = { enabled = false }, - --flake8 = { - --enabled = false -- ruff_lsp - --}, - --pylint = { - --enabled = true, - --args = { - ---- disable missing module docstring info - ---- and temporarilt false cannot import errors - ---- too few public methods - ---- missing functon or method doc - --'--disable=C0114,E0401,R0903,C0116' - --} - --}, - --yapf = { - --enabled = false - --}, - --autopep8 = { - --enabled = false - --}, - --pyflakes = { enabled = false }, -- ruff_lsp - --pycodestyle = { enabled = false }, -- ruff_lsp - --pydocstyle = { - --enabled = false, - --ignore = { - --'D100', -- disable missing module docstring info - --'D101', -- disable missing public class doc - --'D102', -- disable missing class method doc - --'D103', -- disable missing function doc - --'D203', -- disable one line before class docstring required - --'D213', -- disable multiline docstring summary - ---- should start at the second line - --} - --}, - --} - --} + --}, + --jedi_definition = { + --enabled = false, + --}, + --mccabe = { + --enabled = false + --}, + --jedi_hover = { enabled = false }, + --jedi_references = { enabled = false }, + --jedi_signature_help = { enabled = false }, + --jedi_symbols = { enabled = false }, + --ruff = { enabled = false }, + --flake8 = { + --enabled = false -- ruff_lsp + --}, + --pylint = { + --enabled = true, + --args = { + ---- disable missing module docstring info + ---- and temporarilt false cannot import errors + ---- too few public methods + ---- missing functon or method doc + --'--disable=C0114,E0401,R0903,C0116' + --} + --}, + --yapf = { + --enabled = false + --}, + --autopep8 = { + --enabled = false + --}, + --pyflakes = { enabled = false }, -- ruff_lsp + --pycodestyle = { enabled = false }, -- ruff_lsp + --pydocstyle = { + --enabled = false, + --ignore = { + --'D100', -- disable missing module docstring info + --'D101', -- disable missing public class doc + --'D102', -- disable missing class method doc + --'D103', -- disable missing function doc + --'D203', -- disable one line before class docstring required + --'D213', -- disable multiline docstring summary + ---- should start at the second line + --} + --}, + --} + --} --} --} require 'lspconfig'.ruff.setup {