summaryrefslogtreecommitdiff
path: root/lua/lvim/core/builtins/init.lua
blob: cd2946ab9b83e7f21c4354d2defca4e9186058fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
local M = {}

local builtins = {
  "lvim.core.builtins.which-key",
  "lvim.core.builtins.gitsigns",
  "lvim.core.builtins.cmp",
  "lvim.core.builtins.dap",
  "lvim.core.builtins.terminal",
  "lvim.core.builtins.telescope",
  "lvim.core.builtins.treesitter",
  "lvim.core.builtins.nvimtree",
  "lvim.core.builtins.lir",
  "lvim.core.builtins.illuminate",
  "lvim.core.builtins.indentlines",
  "lvim.core.builtins.breadcrumbs",
  "lvim.core.builtins.project",
  "lvim.core.builtins.bufferline",
  "lvim.core.builtins.autopairs",
  "lvim.core.builtins.comment",
  "lvim.core.builtins.lualine",
  "lvim.core.builtins.alpha",
  "lvim.core.builtins.mason",
}

---@class LvimBuiltin
---@field active boolean is builtin enabled
---@field on_config_done function function called after the builtin is set up

function M.init(config)
  ---@type {[string]: LvimBuiltin}
  lvim.builtin = {}

  for _, builtin_path in ipairs(builtins) do
    local builtin = reload(builtin_path)

    builtin.config(config)
  end
end

function M.setup(modname)
  local plugin = require("lvim.core.builtins." .. modname).setup()

  local builtin_tbl = lvim.builtin[modname:gsub("-", "_")]
  if plugin and type(builtin_tbl.on_config_done) == "function" then
    builtin_tbl.on_config_done(plugin)
  end
end

return M