diff --git a/neovim/.config/nvim/after/plugin/commands.lua b/neovim/.config/nvim/after/plugin/commands.lua index f024c93..ae77a89 100644 --- a/neovim/.config/nvim/after/plugin/commands.lua +++ b/neovim/.config/nvim/after/plugin/commands.lua @@ -1,3 +1,10 @@ +local formatting = require("daniil.formatting") + vim.api.nvim_create_user_command("ClearQuickfixList", function() vim.fn.setqflist({}) end, {}) + +vim.api.nvim_create_user_command("FormattingEnable", formatting.enable, {}) +vim.api.nvim_create_user_command("FormattingDisable", formatting.disable, {}) +vim.api.nvim_create_user_command("FormattingToggle", formatting.toggle, {}) +vim.api.nvim_create_user_command("FormattingStatus", formatting.status, {}) diff --git a/neovim/.config/nvim/after/plugin/lsp.lua b/neovim/.config/nvim/after/plugin/lsp.lua index 21e17a8..29c544c 100644 --- a/neovim/.config/nvim/after/plugin/lsp.lua +++ b/neovim/.config/nvim/after/plugin/lsp.lua @@ -4,19 +4,20 @@ local lsp_installer = require("mason-lspconfig") local lspconfig = require("lspconfig") local null_ls = require("null-ls") local util = lspconfig.util +local formatting = require("daniil.formatting") -local formatting = null_ls.builtins.formatting +local null_formatting = null_ls.builtins.formatting mason.setup() lsp_installer.setup() null_ls.setup({ sources = { - formatting.prettierd, - formatting.stylua, - formatting.gofmt, - formatting.goimports, - formatting.shfmt, + null_formatting.prettierd, + null_formatting.stylua, + null_formatting.gofmt, + null_formatting.goimports, + null_formatting.shfmt, }, on_attach = function() local group = vim.api.nvim_create_augroup("NullLsLspFormatting", { clear = true }) @@ -24,6 +25,10 @@ null_ls.setup({ pattern = "*", group = group, callback = function() + if not formatting.is_enabled() then + return + end + vim.lsp.buf.format() end, }) diff --git a/neovim/.config/nvim/after/plugin/remaps.lua b/neovim/.config/nvim/after/plugin/remaps.lua index 6921a7c..cbb4712 100644 --- a/neovim/.config/nvim/after/plugin/remaps.lua +++ b/neovim/.config/nvim/after/plugin/remaps.lua @@ -1,3 +1,5 @@ +local formatting = require("daniil.formatting") + -- Disable different keys and commands vim.keymap.set({ "n", "i", "v" }, "", "") vim.keymap.set({ "n", "i", "v" }, "", "") @@ -35,3 +37,6 @@ vim.keymap.set("n", "", function() end) vim.keymap.set("n", "n", vim.cmd.cnext) vim.keymap.set("n", "N", vim.cmd.cprevious) + +-- formatting +vim.keymap.set("n", "", formatting.toggle) diff --git a/neovim/.config/nvim/lua/daniil/formatting/init.lua b/neovim/.config/nvim/lua/daniil/formatting/init.lua new file mode 100644 index 0000000..24fb168 --- /dev/null +++ b/neovim/.config/nvim/lua/daniil/formatting/init.lua @@ -0,0 +1,35 @@ +local M = {} + +vim.g.daniil_formatting_enabled = 1 + +function M.enable() + vim.g.daniil_formatting_enabled = 1 +end + +function M.disable() + vim.g.daniil_formatting_enabled = 0 +end + +function M.toggle() + if M.is_enabled() then + M.disable() + else + M.enable() + end + + M.status() +end + +function M.is_enabled() + return vim.g.daniil_formatting_enabled == 1 +end + +function M.status() + if M.is_enabled() then + vim.notify("Formatting enabled") + else + vim.notify("Formatting disabled") + end +end + +return M