dressing.nvim/lua/dressing/patch.lua

49 lines
1004 B
Lua

local all_modules = { "input", "select" }
local M = {}
-- For Neovim before 0.6
if not vim.ui then
vim.ui = {}
end
local enabled_mods = {}
M.original_mods = {}
---@param key string
---@return boolean?
M.is_enabled = function(key)
local enabled = enabled_mods[key]
if enabled == nil then
enabled = require("dressing.config")[key].enabled
end
return enabled
end
for _, key in ipairs(all_modules) do
M.original_mods[key] = vim.ui[key]
vim.ui[key] = function(...)
if M.is_enabled(key) then
require(string.format("dressing.%s", key))(...)
else
return M.original_mods[key](...)
end
end
end
---Patch or unpatch all vim.ui methods
---@param enabled? boolean When nil, use the default from config
M.all = function(enabled)
for _, name in ipairs(all_modules) do
M.mod(name, enabled)
end
end
---@param name string
---@param enabled? boolean When nil, use the default from config
M.mod = function(name, enabled)
enabled_mods[name] = enabled
end
return M