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

53 lines
1.6 KiB
Lua

---@module "data"
--- This module aggregates various data tables used throughout the configuration.
local data = {}
-- Explicitly specify for LSP support
data.keys = require("data.keys")
data.types = require("data.types")
data.func = require("data.func")
data.cmd = require("data.cmd")
data.deps = require("data.deps")
data.dash = require("data.dash")
data.ft = require("data.ft")
data.events = require("data.events")
data.autocmd = require("data.autocmd")
data.cond = require("data.cond")
-- Generic function to iterate over files in a specified directory and load Lua modules
function data.load_modules_from_dir(directory, module_prefix)
-- Open the specified directory
local files = vim.fn.readdir(directory)
for _, file in ipairs(files) do
-- Skip init.lua
if file ~= "init.lua" and file:match(".*%.lua$") then
-- Get the module name without the .lua extension
local module_name = file:sub(1, -5)
-- Construct the module path
local module_path = module_prefix .. "." .. module_name
-- Load the module if not already explicitly set
if not _G[module_name] then
_G[module_name] = require(module_path)
end
end
end
end
-- Example usage
local function read_data_dir()
-- Getting the root path for the current module directory
local dir_path = vim.fn.fnamemodify(debug.getinfo(1, "S").source:sub(2), ":h")
-- Load modules from the data directory
data.load_modules_from_dir(dir_path, "data")
end
-- Read the directory and load any additional modules
read_data_dir()
---@alias DataModule table<string, any>
---@type DataModule
return data