diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 38ec4269..422cadd2 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -117,8 +117,8 @@ map("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" }) -- stylua: ignore start -- toggle options -LazyVim.toggle.format():map("uf") -LazyVim.toggle.format(true):map("uF") +LazyVim.format.snacks_toggle():map("uf") +LazyVim.format.snacks_toggle(true):map("uF") Snacks.toggle.option("spell", { name = "Spelling"}):map("us") Snacks.toggle.option("wrap", {name = "Wrap"}):map("uw") Snacks.toggle.option("relativenumber", { name = "Relative Number"}):map("uL") @@ -165,7 +165,7 @@ map("n", "w", "", { desc = "Windows", remap = true }) map("n", "-", "s", { desc = "Split Window Below", remap = true }) map("n", "|", "v", { desc = "Split Window Right", remap = true }) map("n", "wd", "c", { desc = "Delete Window", remap = true }) -LazyVim.toggle.maximize():map("wm") +LazyVim.ui.maximize():map("wm") -- tabs map("n", "l", "tablast", { desc = "Last Tab" }) diff --git a/lua/lazyvim/util/deprecated.lua b/lua/lazyvim/util/deprecated.lua new file mode 100644 index 00000000..43d73fcf --- /dev/null +++ b/lua/lazyvim/util/deprecated.lua @@ -0,0 +1,59 @@ +local M = {} + +M.moved = { + lsp = { + rename_file = { "Snacks.rename.rename_file" }, + on_rename = { "Snacks.rename.on_rename_file" }, + words = { "Snacks.words" }, + }, + terminal = { + open = { "Snacks.terminal" }, + __call = { "Snacks.terminal" }, + }, + ui = { + statuscolumn = { "Snacks.statuscolumn" }, + bufremove = { "Snacks.bufdelete" }, + }, +} + +---@param name string +---@param mod table +function M.decorate(name, mod) + if not M.moved[name] then + return mod + end + setmetatable(mod, { + __call = function(_, ...) + local to = M.moved[name].__call[1] + LazyVim.deprecate("LazyVim." .. name, to) + local ret = vim.tbl_get(_G, unpack(vim.split(to, ".", { plain = true }))) + return ret(...) + end, + __index = function(_, k) + if M.moved[name][k] then + local to = M.moved[name][k][1] + LazyVim.deprecate("LazyVim." .. name .. "." .. k, to) + local ret = vim.tbl_get(_G, unpack(vim.split(to, ".", { plain = true }))) + return ret + end + return nil + end, + }) +end + +function M.lazygit() + LazyVim.deprecate("LazyVim.lazygit", "Snacks.lazygit") + return Snacks.lazygit +end + +function M.toggle() + LazyVim.deprecate("LazyVim.toggle", "Snacks.toggle") + return { + map = function() end, + wrap = function() + return {} + end, + } +end + +return M diff --git a/lua/lazyvim/util/format.lua b/lua/lazyvim/util/format.lua index de6ad052..7b0ccfd2 100644 --- a/lua/lazyvim/util/format.lua +++ b/lua/lazyvim/util/format.lua @@ -177,4 +177,20 @@ function M.setup() end, { desc = "Show info about the formatters for the current buffer" }) end +---@param buf? boolean +function M.snacks_toggle(buf) + return Snacks.toggle({ + name = "Auto Format (" .. (buf and "Buffer" or "Global") .. ")", + get = function() + if not buf then + return vim.g.autoformat == nil or vim.g.autoformat + end + return LazyVim.format.enabled() + end, + set = function(state) + LazyVim.format.enable(state, buf) + end, + }) +end + return M diff --git a/lua/lazyvim/util/init.lua b/lua/lazyvim/util/init.lua index 8ea1ab79..8d94f582 100644 --- a/lua/lazyvim/util/init.lua +++ b/lua/lazyvim/util/init.lua @@ -6,7 +6,6 @@ local LazyUtil = require("lazy.core.util") ---@field lsp lazyvim.util.lsp ---@field root lazyvim.util.root ---@field terminal lazyvim.util.terminal ----@field toggle lazyvim.util.toggle ---@field format lazyvim.util.format ---@field plugin lazyvim.util.plugin ---@field extras lazyvim.util.extras @@ -19,36 +18,17 @@ local LazyUtil = require("lazy.core.util") ---@field cmp lazyvim.util.cmp local M = {} ----@type table -local deprecated = { - get_clients = "lsp", - on_attach = "lsp", - on_rename = "lsp", - root_patterns = { "root", "patterns" }, - get_root = { "root", "get" }, - float_term = { "terminal", "open" }, - toggle_diagnostics = { "toggle", "diagnostics" }, - toggle_number = { "toggle", "number" }, - fg = "ui", - telescope = "pick", -} - setmetatable(M, { __index = function(t, k) if LazyUtil[k] then return LazyUtil[k] end - local dep = deprecated[k] - if dep then - local mod = type(dep) == "table" and dep[1] or dep - local key = type(dep) == "table" and dep[2] or k - M.deprecate([[LazyVim.]] .. k, [[LazyVim.]] .. mod .. "." .. key) - ---@diagnostic disable-next-line: no-unknown - t[mod] = require("lazyvim.util." .. mod) -- load here to prevent loops - return t[mod][key] + if k == "lazygit" or k == "toggle" then -- HACK: special case for lazygit + return M.deprecated[k]() end ---@diagnostic disable-next-line: no-unknown t[k] = require("lazyvim.util." .. k) + M.deprecated.decorate(k, t[k]) return t[k] end, }) diff --git a/lua/lazyvim/util/terminal.lua b/lua/lazyvim/util/terminal.lua index 575a0582..b9345c1d 100644 --- a/lua/lazyvim/util/terminal.lua +++ b/lua/lazyvim/util/terminal.lua @@ -1,10 +1,5 @@ ---@class lazyvim.util.terminal ----@overload fun(cmd: string|string[], opts: snacks.terminal.Opts): snacks.terminal -local M = setmetatable({}, { - __call = function(m, ...) - return m.open(...) - end, -}) +local M = {} ---@param shell? string function M.setup(shell) @@ -37,12 +32,4 @@ function M.setup(shell) end end --- Opens a floating terminal (interactive by default) ----@deprecated use Snacks.terminal instead ----@param cmd? string[]|string ----@param opts? snacks.terminal.Opts -function M.open(cmd, opts) - return Snacks.terminal(cmd, opts) -end - return M diff --git a/lua/lazyvim/util/toggle.lua b/lua/lazyvim/util/toggle.lua deleted file mode 100644 index afa3f670..00000000 --- a/lua/lazyvim/util/toggle.lua +++ /dev/null @@ -1,61 +0,0 @@ ----@class lazyvim.util.toggle -local M = {} - ----@param buf? boolean -function M.format(buf) - return Snacks.toggle({ - name = "Auto Format (" .. (buf and "Buffer" or "Global") .. ")", - get = function() - if not buf then - return vim.g.autoformat == nil or vim.g.autoformat - end - return LazyVim.format.enabled() - end, - set = function(state) - LazyVim.format.enable(state, buf) - end, - }) -end - -function M.maximize() - ---@type {k:string, v:any}[]? - local maximized = nil - return Snacks.toggle({ - name = "Maximize", - get = function() - return maximized ~= nil - end, - set = function(state) - if state then - maximized = {} - local function set(k, v) - table.insert(maximized, 1, { k = k, v = vim.o[k] }) - vim.o[k] = v - end - set("winwidth", 999) - set("winheight", 999) - set("winminwidth", 10) - set("winminheight", 4) - vim.cmd("wincmd =") - -- `QuitPre` seems to be executed even if we quit a normal window, so we don't want that - -- `VimLeavePre` might be another consideration? Not sure about differences between the 2 - vim.api.nvim_create_autocmd("ExitPre", { - once = true, - group = vim.api.nvim_create_augroup("lazyvim_restore_max_exit_pre", { clear = true }), - desc = "Restore width/height when close Neovim while maximized", - callback = function() - M.maximize.set(false) - end, - }) - else - for _, opt in ipairs(maximized) do - vim.o[opt.k] = opt.v - end - maximized = nil - vim.cmd("wincmd =") - end - end, - }) -end - -return M diff --git a/lua/lazyvim/util/ui.lua b/lua/lazyvim/util/ui.lua index cb9f856f..14d0850f 100644 --- a/lua/lazyvim/util/ui.lua +++ b/lua/lazyvim/util/ui.lua @@ -20,11 +20,6 @@ function M.foldtext() return ret end ----@deprecated This is now setup by snacks.nvim -function M.statuscolumn() - return Snacks.statuscolumn() -end - ---@return {fg?:string}? function M.fg(name) local color = M.color(name) @@ -90,4 +85,45 @@ function M.foldexpr() return "0" end +function M.maximize() + ---@type {k:string, v:any}[]? + local maximized = nil + return Snacks.toggle({ + name = "Maximize", + get = function() + return maximized ~= nil + end, + set = function(state) + if state then + maximized = {} + local function set(k, v) + table.insert(maximized, 1, { k = k, v = vim.o[k] }) + vim.o[k] = v + end + set("winwidth", 999) + set("winheight", 999) + set("winminwidth", 10) + set("winminheight", 4) + vim.cmd("wincmd =") + -- `QuitPre` seems to be executed even if we quit a normal window, so we don't want that + -- `VimLeavePre` might be another consideration? Not sure about differences between the 2 + vim.api.nvim_create_autocmd("ExitPre", { + once = true, + group = vim.api.nvim_create_augroup("lazyvim_restore_max_exit_pre", { clear = true }), + desc = "Restore width/height when close Neovim while maximized", + callback = function() + M.maximize.set(false) + end, + }) + else + for _, opt in ipairs(maximized) do + vim.o[opt.k] = opt.v + end + maximized = nil + vim.cmd("wincmd =") + end + end, + }) +end + return M