---@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 ---@type DataModule return data