Files
neovim-config/lua/data/autocmd.lua
T

94 lines
3.2 KiB
Lua

---@module "data.autocmd"
--- This module defines the autocommands for the Neovim configuration.
-- ╭─────────────────────────────────────────────────────────╮
-- │ Autocommands │
-- ╰─────────────────────────────────────────────────────────╯
local M = {}
local augroup = vim.api.nvim_create_augroup
local autocmd = vim.api.nvim_create_autocmd
M.cpp_picker = function()
augroup("cpp_picker", { clear = true })
-- C++ Picker
autocmd("FileType", {
group = "cpp_picker",
pattern = { "cpp", "c", "h", "hpp" },
callback = function()
require("data.func").add_keymap(require("data.keys").cpp_picker)
end,
})
end
M.minifiles = {
---@function Function to dynamically resize the preview window
dynamic_resize = function()
local function update_width_preview()
local multiplier = 0.25
if vim.g.minifiles_width ~= nil then
multiplier = vim.g.minifiles_width
end
if package.loaded["mini.files"] then
-- Obtain the existing config
local config = require("mini.files").config
-- Update the width_preview based on the current window size
if multiplier > 1 then
-- If the multiplier is greater than 1, use as the preview width
config.windows.width_preview = multiplier
else
-- Otherwise, use the current window width multiplied by the multiplier
config.windows.width_preview = math.floor(vim.o.columns * multiplier)
end
-- Apply the updated config
require("mini.files").setup(config)
end
end
-- Flag to determine if mini.files is currently in use
local is_mini_files_active = false
-- Autocommand group to handle dynamic resizing
augroup("MiniFilesDynamicWidth", { clear = true })
-- Handle mini.files open event to set the flag
autocmd("User", {
group = "MiniFilesDynamicWidth",
pattern = "MiniFilesExplorerOpen",
callback = function()
is_mini_files_active = true
end,
})
-- Handle mini.files close event to reset the flag and update the preview width
autocmd("User", {
group = "MiniFilesDynamicWidth",
pattern = "MiniFilesExplorerClose",
callback = function()
is_mini_files_active = false
update_width_preview()
end,
})
-- Handle window resize event
autocmd("VimResized", {
group = "MiniFilesDynamicWidth",
callback = function()
if is_mini_files_active then
-- Defer the update until mini.files closes
autocmd("User", {
group = "MiniFilesDynamicWidth",
pattern = "MiniFilesExplorerClose",
callback = update_width_preview,
once = true, -- Ensure this runs only once
})
else
-- If mini.files is not active, update immediately
update_width_preview()
end
end,
})
end,
}
return M