summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLostNeophyte <[email protected]>2023-01-25 11:06:39 +0100
committerLostNeophyte <[email protected]>2023-01-25 11:11:25 +0100
commiteba121cc651413d753f688162413008a6ed455e2 (patch)
tree737757af86e0be6a2517e4ad21fffb859621494f
parent4b9f4b2ae6dfc034ba10abab5ab91c357c058734 (diff)
refactor: use callbacks for configuring builtins
-rw-r--r--lua/lvim/bootstrap.lua2
-rw-r--r--lua/lvim/config/_deprecated.lua35
-rw-r--r--lua/lvim/config/init.lua20
-rw-r--r--lua/lvim/config/settings.lua2
-rw-r--r--lua/lvim/core/alpha.lua20
-rw-r--r--lua/lvim/core/autopairs.lua9
-rw-r--r--lua/lvim/core/breadcrumbs.lua10
-rw-r--r--lua/lvim/core/bufferline.lua10
-rw-r--r--lua/lvim/core/builtins/init.lua91
-rw-r--r--lua/lvim/core/cmp.lua10
-rw-r--r--lua/lvim/core/comment.lua9
-rw-r--r--lua/lvim/core/dap.lua10
-rw-r--r--lua/lvim/core/gitsigns.lua9
-rw-r--r--lua/lvim/core/illuminate.lua10
-rw-r--r--lua/lvim/core/indentlines.lua10
-rw-r--r--lua/lvim/core/lir.lua10
-rw-r--r--lua/lvim/core/lualine/init.lua15
-rw-r--r--lua/lvim/core/mason.lua4
-rw-r--r--lua/lvim/core/nvimtree.lua10
-rw-r--r--lua/lvim/core/project.lua13
-rw-r--r--lua/lvim/core/telescope.lua11
-rw-r--r--lua/lvim/core/terminal.lua10
-rw-r--r--lua/lvim/core/treesitter.lua10
-rw-r--r--lua/lvim/core/which-key.lua11
-rw-r--r--lua/lvim/lsp/config.lua188
-rw-r--r--lua/lvim/lsp/init.lua5
-rw-r--r--lua/lvim/plugin-loader.lua4
-rw-r--r--lua/lvim/plugins.lua60
28 files changed, 280 insertions, 328 deletions
diff --git a/lua/lvim/bootstrap.lua b/lua/lvim/bootstrap.lua
index 1ba6ba42..7bfe6f76 100644
--- a/lua/lvim/bootstrap.lua
+++ b/lua/lvim/bootstrap.lua
@@ -82,7 +82,7 @@ function M:init(base_dir)
if os.getenv "LUNARVIM_RUNTIME_DIR" then
vim.opt.rtp:remove(join_paths(vim.call("stdpath", "data"), "site"))
vim.opt.rtp:remove(join_paths(vim.call("stdpath", "data"), "site", "after"))
- -- vim.opt.rtp:prepend(join_paths(self.runtime_dir, "site"))
+
vim.opt.rtp:append(join_paths(self.runtime_dir, "lvim", "after"))
vim.opt.rtp:append(join_paths(self.runtime_dir, "site", "after"))
diff --git a/lua/lvim/config/_deprecated.lua b/lua/lvim/config/_deprecated.lua
index d4b15f30..5ce851c2 100644
--- a/lua/lvim/config/_deprecated.lua
+++ b/lua/lvim/config/_deprecated.lua
@@ -17,7 +17,7 @@ local function deprecate(name, alternative)
end)
end
-function M.handle()
+function M.pre_user_config()
local mt = {
__newindex = function(_, k, _)
deprecate(k)
@@ -32,33 +32,9 @@ function M.handle()
lvim.builtin.theme.tokyonight.options[k] = v
end,
})
-
- ---@deprecated
- lvim.builtin.notify = {}
- setmetatable(lvim.builtin.notify, {
- __newindex = function(_, k, _)
- deprecate("lvim.builtin.notify." .. k, "See LunarVim#3294")
- end,
- })
-
- ---@deprecated
- lvim.builtin.dashboard = {}
- setmetatable(lvim.builtin.dashboard, {
- __newindex = function(_, k, _)
- deprecate("lvim.builtin.dashboard." .. k, "Use `lvim.builtin.alpha` instead. See LunarVim#1906")
- end,
- })
-
- ---@deprecated
- lvim.lsp.popup_border = {}
- setmetatable(lvim.lsp.popup_border, mt)
-
- ---@deprecated
- lvim.lang = {}
- setmetatable(lvim.lang, mt)
end
-function M.post_load()
+function M.post_user_config()
if lvim.lsp.override and not vim.tbl_isempty(lvim.lsp.override) then
deprecate("lvim.lsp.override", "Use `lvim.lsp.automatic_configuration.skipped_servers` instead")
vim.tbl_map(function(c)
@@ -156,4 +132,11 @@ function M.post_load()
end
end
+M.post_builtin = {
+ -- example:
+ -- which_key = function ()
+ --
+ -- end
+}
+
return M
diff --git a/lua/lvim/config/init.lua b/lua/lvim/config/init.lua
index 9f4bb45e..7823d9f2 100644
--- a/lua/lvim/config/init.lua
+++ b/lua/lvim/config/init.lua
@@ -18,7 +18,7 @@ function M:init()
require("lvim.keymappings").load_defaults()
local builtins = require "lvim.core.builtins"
- builtins.config { user_config_file = user_config_file }
+ builtins.init()
local settings = require "lvim.config.settings"
settings.load_defaults()
@@ -26,21 +26,7 @@ function M:init()
local autocmds = require "lvim.core.autocmds"
autocmds.load_defaults()
- local lvim_lsp_config = require "lvim.lsp.config"
- lvim.lsp = vim.deepcopy(lvim_lsp_config)
-
- lvim.builtin.luasnip = {
- sources = {
- friendly_snippets = true,
- },
- }
-
- lvim.builtin.bigfile = {
- active = true,
- config = {},
- }
-
- require("lvim.config._deprecated").handle()
+ require("lvim.config._deprecated").pre_user_config()
end
--- Override the configuration with a user provided one
@@ -65,7 +51,7 @@ function M:load(config_path)
Log:set_level(lvim.log.level)
- require("lvim.config._deprecated").post_load()
+ -- require("lvim.config._deprecated").post_load()
autocmds.define_autocmds(lvim.autocommands)
diff --git a/lua/lvim/config/settings.lua b/lua/lvim/config/settings.lua
index 42281ca1..0d6de07c 100644
--- a/lua/lvim/config/settings.lua
+++ b/lua/lvim/config/settings.lua
@@ -51,7 +51,7 @@ M.load_default_options = function()
sidescrolloff = 8, -- minimal number of screen lines to keep left and right of the cursor.
showcmd = false,
ruler = false,
- laststatus = 3,
+ laststatus = 0,
}
--- SETTINGS ---
diff --git a/lua/lvim/core/alpha.lua b/lua/lvim/core/alpha.lua
index 42159d70..81bff949 100644
--- a/lua/lvim/core/alpha.lua
+++ b/lua/lvim/core/alpha.lua
@@ -1,23 +1,21 @@
local M = {}
function M.config()
- local lazy_set = require("lvim.utils.modules").lazy_set
- local lvim_dashboard = lazy_set("lvim.core.alpha.dashboard", "get_sections")
- local lvim_startify = lazy_set("lvim.core.alpha.startify", "get_sections")
- lvim.builtin.alpha = {
+ local config = {
dashboard = {
config = {},
- section = lvim_dashboard,
+ section = require("lvim.core.alpha.dashboard").get_sections(),
opts = { autostart = true },
},
startify = {
config = {},
- section = lvim_startify,
+ section = require("lvim.core.alpha.startify").get_sections(),
opts = { autostart = true },
},
- active = true,
mode = "dashboard",
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.alpha = config
end
local function resolve_buttons(theme_name, button_section)
@@ -75,14 +73,6 @@ local function configure_additional_autocmds()
pattern = "alpha",
command = "set showtabline=0 | autocmd BufLeave <buffer> set showtabline=" .. vim.opt.showtabline._value,
})
- if not lvim.builtin.lualine.options.globalstatus then
- -- https://github.com/goolord/alpha-nvim/issues/42
- vim.api.nvim_create_autocmd("FileType", {
- group = group,
- pattern = "alpha",
- command = "set laststatus=0 | autocmd BufUnload <buffer> set laststatus=" .. vim.opt.laststatus._value,
- })
- end
end
function M.setup()
diff --git a/lua/lvim/core/autopairs.lua b/lua/lvim/core/autopairs.lua
index b9b66683..76032eb7 100644
--- a/lua/lvim/core/autopairs.lua
+++ b/lua/lvim/core/autopairs.lua
@@ -1,9 +1,7 @@
local M = {}
function M.config()
- lvim.builtin.autopairs = {
- active = true,
- on_config_done = nil,
+ local config = {
---@usage modifies the function or method delimiter by filetypes
map_char = {
all = "(",
@@ -44,6 +42,8 @@ function M.config()
highlight_grey = "Comment",
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.autopairs = config
end
local function on_confirm_done(...)
@@ -71,9 +71,6 @@ M.setup = function()
fast_wrap = lvim.builtin.autopairs.fast_wrap,
}
- if lvim.builtin.autopairs.on_config_done then
- lvim.builtin.autopairs.on_config_done(autopairs)
- end
pcall(function()
require "nvim-autopairs.completion.cmp"
require("cmp").event:off("confirm_done", on_confirm_done)
diff --git a/lua/lvim/core/breadcrumbs.lua b/lua/lvim/core/breadcrumbs.lua
index 0bf87a45..fe80cd95 100644
--- a/lua/lvim/core/breadcrumbs.lua
+++ b/lua/lvim/core/breadcrumbs.lua
@@ -5,9 +5,7 @@ local M = {}
local icons = lvim.icons.kind
M.config = function()
- lvim.builtin.breadcrumbs = {
- active = true,
- on_config_done = nil,
+ local config = {
winbar_filetype_exclude = {
"help",
"startify",
@@ -77,6 +75,8 @@ M.config = function()
depth_limit_indicator = "..",
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.breadcrumbs = config
end
M.setup = function()
@@ -87,10 +87,6 @@ M.setup = function()
M.create_winbar()
navic.setup(lvim.builtin.breadcrumbs.options)
-
- if lvim.builtin.breadcrumbs.on_config_done then
- lvim.builtin.breadcrumbs.on_config_done()
- end
end
M.get_filename = function()
diff --git a/lua/lvim/core/bufferline.lua b/lua/lvim/core/bufferline.lua
index abe16437..a65bc632 100644
--- a/lua/lvim/core/bufferline.lua
+++ b/lua/lvim/core/bufferline.lua
@@ -41,9 +41,7 @@ local function custom_filter(buf, buf_nums)
end
M.config = function()
- lvim.builtin.bufferline = {
- active = true,
- on_config_done = nil,
+ local config = {
keymap = {
normal_mode = {},
},
@@ -142,6 +140,8 @@ M.config = function()
sort_by = "id",
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.bufferline = config
end
M.setup = function()
@@ -158,10 +158,6 @@ M.setup = function()
options = lvim.builtin.bufferline.options,
highlights = lvim.builtin.bufferline.highlights,
}
-
- if lvim.builtin.bufferline.on_config_done then
- lvim.builtin.bufferline.on_config_done()
- end
end
--stylua: ignore
diff --git a/lua/lvim/core/builtins/init.lua b/lua/lvim/core/builtins/init.lua
index 4764ff70..e918b033 100644
--- a/lua/lvim/core/builtins/init.lua
+++ b/lua/lvim/core/builtins/init.lua
@@ -1,33 +1,76 @@
local M = {}
+---@class LvimBuiltin
+---@field active boolean is builtin enabled
+---@field setup table options passed to setup()
+---@field on_config function function called to configure the builtin
+---@field on_config_done function function called to configure the builtin
+
local builtins = {
- "lvim.core.theme",
- "lvim.core.which-key",
- "lvim.core.gitsigns",
- "lvim.core.cmp",
- "lvim.core.dap",
- "lvim.core.terminal",
- "lvim.core.telescope",
- "lvim.core.treesitter",
- "lvim.core.nvimtree",
- "lvim.core.lir",
- "lvim.core.illuminate",
- "lvim.core.indentlines",
- "lvim.core.breadcrumbs",
- "lvim.core.project",
- "lvim.core.bufferline",
- "lvim.core.autopairs",
- "lvim.core.comment",
- "lvim.core.lualine",
- "lvim.core.alpha",
- "lvim.core.mason",
+ "which_key",
+ "gitsigns",
+ "cmp",
+ "dap",
+ "terminal",
+ "telescope",
+ "treesitter",
+ "nvimtree",
+ "lir",
+ "illuminate",
+ "indentlines",
+ "breadcrumbs",
+ "project",
+ "bufferline",
+ "autopairs",
+ "comment",
+ "lualine",
+ "alpha",
+ "mason",
}
-function M.config(config)
- for _, builtin_path in ipairs(builtins) do
- local builtin = reload(builtin_path)
+function M.init()
+ for _, name in ipairs(builtins) do
+ lvim.builtin[name] = { active = true }
+ end
+
+ reload("lvim.core.theme").config()
+
+ lvim.builtin.cmp.cmdline = { enable = false }
+
+ lvim.builtin.luasnip = {
+ sources = {
+ friendly_snippets = true,
+ },
+ }
+
+ lvim.builtin.bigfile = {
+ active = true,
+ config = {},
+ }
+end
+
+function M.setup(builtin_mod_name)
+ local builtin_name = builtin_mod_name:gsub("-", "_")
+ local mod = require("lvim.core." .. builtin_mod_name)
+
+ -- initialize config table
+ mod.config()
+ local builtin = lvim.builtin[builtin_name]
+
+ if type(builtin.on_config) == "function" then
+ builtin.on_config()
+
+ local deprecated = require "lvim.config._deprecated"
+ local deprecation_handler = deprecated.post_builtin[builtin_name]
+ if deprecation_handler then
+ deprecation_handler()
+ end
+ end
+
+ mod.setup()
- builtin.config(config)
+ if type(builtin.on_config_done) == "function" then
+ builtin.on_config_done()
end
end
diff --git a/lua/lvim/core/cmp.lua b/lua/lvim/core/cmp.lua
index 142d548f..2360947f 100644
--- a/lua/lvim/core/cmp.lua
+++ b/lua/lvim/core/cmp.lua
@@ -127,9 +127,7 @@ M.config = function()
return
end
- lvim.builtin.cmp = {
- active = true,
- on_config_done = nil,
+ local config = {
enabled = function()
local buftype = vim.api.nvim_buf_get_option(0, "buftype")
if buftype == "prompt" then
@@ -354,6 +352,8 @@ M.config = function()
},
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.cmp = config
end
function M.setup()
@@ -368,10 +368,6 @@ function M.setup()
})
end
end
-
- if lvim.builtin.cmp.on_config_done then
- lvim.builtin.cmp.on_config_done(cmp)
- end
end
return M
diff --git a/lua/lvim/core/comment.lua b/lua/lvim/core/comment.lua
index f07929c7..c75d402c 100644
--- a/lua/lvim/core/comment.lua
+++ b/lua/lvim/core/comment.lua
@@ -1,9 +1,7 @@
local M = {}
function M.config()
- lvim.builtin.comment = {
- active = true,
- on_config_done = nil,
+ local config = {
---Add a space b/w comment and the line
---@type boolean
padding = true,
@@ -72,15 +70,14 @@ function M.config()
---@type function|nil
post_hook = nil,
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.comment = config
end
function M.setup()
local nvim_comment = require "Comment"
nvim_comment.setup(lvim.builtin.comment)
- if lvim.builtin.comment.on_config_done then
- lvim.builtin.comment.on_config_done(nvim_comment)
- end
end
return M
diff --git a/lua/lvim/core/dap.lua b/lua/lvim/core/dap.lua
index d8de10d5..029d1d98 100644
--- a/lua/lvim/core/dap.lua
+++ b/lua/lvim/core/dap.lua
@@ -1,9 +1,7 @@
local M = {}
M.config = function()
- lvim.builtin.dap = {
- active = true,
- on_config_done = nil,
+ local config = {
breakpoint = {
text = lvim.icons.ui.Bug,
texthl = "DiagnosticSignError",
@@ -95,6 +93,8 @@ M.config = function()
},
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.dap = config
end
M.setup = function()
@@ -110,10 +110,6 @@ M.setup = function()
end
dap.set_log_level(lvim.builtin.dap.log.level)
-
- if lvim.builtin.dap.on_config_done then
- lvim.builtin.dap.on_config_done(dap)
- end
end
M.setup_ui = function()
diff --git a/lua/lvim/core/gitsigns.lua b/lua/lvim/core/gitsigns.lua
index 1c8619c8..1cf6e4ac 100644
--- a/lua/lvim/core/gitsigns.lua
+++ b/lua/lvim/core/gitsigns.lua
@@ -1,9 +1,7 @@
local M = {}
M.config = function()
- lvim.builtin.gitsigns = {
- active = true,
- on_config_done = nil,
+ local config = {
opts = {
signs = {
add = {
@@ -69,15 +67,14 @@ M.config = function()
yadm = { enable = false },
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.gitsigns = config
end
M.setup = function()
local gitsigns = reload "gitsigns"
gitsigns.setup(lvim.builtin.gitsigns.opts)
- if lvim.builtin.gitsigns.on_config_done then
- lvim.builtin.gitsigns.on_config_done(gitsigns)
- end
end
return M
diff --git a/lua/lvim/core/illuminate.lua b/lua/lvim/core/illuminate.lua
index 5968b4bb..3c14ecab 100644
--- a/lua/lvim/core/illuminate.lua
+++ b/lua/lvim/core/illuminate.lua
@@ -1,9 +1,7 @@
local M = {}
M.config = function()
- lvim.builtin.illuminate = {
- active = true,
- on_config_done = nil,
+ local config = {
options = {
-- providers: provider used to get references in the buffer, ordered by priority
providers = {
@@ -51,6 +49,8 @@ M.config = function()
under_cursor = true,
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.illuminate = config
end
M.setup = function()
@@ -63,10 +63,6 @@ M.setup = function()
if not config_ok then
return
end
-
- if lvim.builtin.illuminate.on_config_done then
- lvim.builtin.illuminate.on_config_done()
- end
end
return M
diff --git a/lua/lvim/core/indentlines.lua b/lua/lvim/core/indentlines.lua
index 3097daf8..d0716a4c 100644
--- a/lua/lvim/core/indentlines.lua
+++ b/lua/lvim/core/indentlines.lua
@@ -1,9 +1,7 @@
local M = {}
M.config = function()
- lvim.builtin.indentlines = {
- active = true,
- on_config_done = nil,
+ local config = {
options = {
enabled = true,
buftype_exclude = { "terminal", "nofile" },
@@ -25,6 +23,8 @@ M.config = function()
show_current_context = true,
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.indentlines = config
end
M.setup = function()
@@ -34,10 +34,6 @@ M.setup = function()
end
indent_blankline.setup(lvim.builtin.indentlines.options)
-
- if lvim.builtin.indentlines.on_config_done then
- lvim.builtin.indentlines.on_config_done()
- end
end
return M
diff --git a/lua/lvim/core/lir.lua b/lua/lvim/core/lir.lua
index 83f79b6f..eca156a7 100644
--- a/lua/lvim/core/lir.lua
+++ b/lua/lvim/core/lir.lua
@@ -5,9 +5,7 @@ M.config = function()
local actions = utils.require_on_exported_call "lir.actions"
local clipboard_actions = utils.require_on_exported_call "lir.clipboard.actions"
- lvim.builtin.lir = {
- active = true,
- on_config_done = nil,
+ local config = {
icon = "î—¿",
show_hidden_files = false,
ignore = {}, -- { ".DS_Store" "node_modules" } etc.
@@ -72,6 +70,8 @@ M.config = function()
)
end,
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.lir = config
end
function M.icon_setup()
@@ -111,10 +111,6 @@ function M.setup()
lir.setup(lvim.builtin.lir)
M.icon_setup()
-
- if lvim.builtin.lir.on_config_done then
- lvim.builtin.lir.on_config_done(lir)
- end
end
return M
diff --git a/lua/lvim/core/lualine/init.lua b/lua/lvim/core/lualine/init.lua
index 0ee35c04..bb530258 100644
--- a/lua/lvim/core/lualine/init.lua
+++ b/lua/lvim/core/lualine/init.lua
@@ -1,14 +1,15 @@
local M = {}
M.config = function()
- lvim.builtin.lualine = {
- active = true,
+ local config = {
style = "lvim",
options = {
icons_enabled = nil,
component_separators = nil,
section_separators = nil,
theme = nil,
- disabled_filetypes = nil,
+ disabled_filetypes = {
+ statusline = { "alpha" },
+ },
globalstatus = true,
},
sections = {
@@ -29,8 +30,9 @@ M.config = function()
},
tabline = nil,
extensions = nil,
- on_config_done = nil,
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.lualine = config
end
M.setup = function()
@@ -47,11 +49,8 @@ M.setup = function()
require("lvim.core.lualine.styles").update()
+ vim.opt.laststatus = 3
lualine.setup(lvim.builtin.lualine)
-
- if lvim.builtin.lualine.on_config_done then
- lvim.builtin.lualine.on_config_done(lualine)
- end
end
return M
diff --git a/lua/lvim/core/mason.lua b/lua/lvim/core/mason.lua
index 75b12229..51271045 100644
--- a/lua/lvim/core/mason.lua
+++ b/lua/lvim/core/mason.lua
@@ -3,7 +3,7 @@ local M = {}
local join_paths = require("lvim.utils").join_paths
function M.config()
- lvim.builtin.mason = {
+ local config = {
ui = {
border = "rounded",
keymaps = {
@@ -50,6 +50,8 @@ function M.config()
download_url_template = "https://github.com/%s/releases/download/%s/%s",
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.mason = config
end
function M.get_prefix()
diff --git a/lua/lvim/core/nvimtree.lua b/lua/lvim/core/nvimtree.lua
index 6f87e30d..d3c7a2de 100644
--- a/lua/lvim/core/nvimtree.lua
+++ b/lua/lvim/core/nvimtree.lua
@@ -2,9 +2,7 @@ local M = {}
local Log = require "lvim.core.log"
function M.config()
- lvim.builtin.nvimtree = {
- active = true,
- on_config_done = nil,
+ local config = {
setup = {
auto_reload_on_write = false,
disable_netrw = false,
@@ -232,6 +230,8 @@ function M.config()
},
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.nvimtree = config
end
function M.setup()
@@ -276,10 +276,6 @@ function M.setup()
end
nvim_tree.setup(lvim.builtin.nvimtree.setup)
-
- if lvim.builtin.nvimtree.on_config_done then
- lvim.builtin.nvimtree.on_config_done(nvim_tree)
- end
end
function M.start_telescope(telescope_mode)
diff --git a/lua/lvim/core/project.lua b/lua/lvim/core/project.lua
index 17473c55..f2da6c33 100644
--- a/lua/lvim/core/project.lua
+++ b/lua/lvim/core/project.lua
@@ -1,13 +1,7 @@
local M = {}
function M.config()
- lvim.builtin.project = {
- ---@usage set to false to disable project.nvim.
- --- This is on by default since it's currently the expected behavior.
- active = true,
-
- on_config_done = nil,
-
+ local config = {
---@usage set to true to disable setting the current-woriking directory
--- Manual mode doesn't automatically change your root directory, so you have
--- the option to manually do so using `:ProjectRoot` command.
@@ -50,6 +44,8 @@ function M.config()
---@usage path to store the project history for use in telescope
datapath = get_cache_dir(),
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.project = config
end
function M.setup()
@@ -59,9 +55,6 @@ function M.setup()
end
project.setup(lvim.builtin.project)
- if lvim.builtin.project.on_config_done then
- lvim.builtin.project.on_config_done(project)
- end
end
return M
diff --git a/lua/lvim/core/telescope.lua b/lua/lvim/core/telescope.lua
index b701f7e4..c1b4e2ec 100644
--- a/lua/lvim/core/telescope.lua
+++ b/lua/lvim/core/telescope.lua
@@ -8,10 +8,7 @@ local M = {}
function M.config()
local actions = require("lvim.utils.modules").require_on_exported_call "telescope.actions"
- lvim.builtin.telescope = {
- ---@usage disable telescope completely [not recommended]
- active = true,
- on_config_done = nil,
+ local config = {
theme = "dropdown", ---@type telescope_themes
defaults = {
prompt_prefix = lvim.icons.ui.Telescope .. " ",
@@ -107,6 +104,8 @@ function M.config()
},
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.telescope = config
end
function M.setup()
@@ -136,10 +135,6 @@ function M.setup()
end)
end
- if lvim.builtin.telescope.on_config_done then
- lvim.builtin.telescope.on_config_done(telescope)
- end
-
if lvim.builtin.telescope.extensions and lvim.builtin.telescope.extensions.fzf then
pcall(function()
require("telescope").load_extension "fzf"
diff --git a/lua/lvim/core/terminal.lua b/lua/lvim/core/terminal.lua
index 663ba77a..0635b4a9 100644
--- a/lua/lvim/core/terminal.lua
+++ b/lua/lvim/core/terminal.lua
@@ -2,9 +2,7 @@ local M = {}
local Log = require "lvim.core.log"
M.config = function()
- lvim.builtin["terminal"] = {
- active = true,
- on_config_done = nil,
+ local config = {
-- size can be a number or function which is passed the current terminal
size = 20,
open_mapping = [[<c-\>]],
@@ -46,6 +44,8 @@ M.config = function()
{ nil, "<M-3>", "Float Terminal", "float", nil },
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.terminal = config
end
--- Get current buffer size
@@ -98,10 +98,6 @@ M.setup = function()
M.add_exec(opts)
end
-
- if lvim.builtin.terminal.on_config_done then
- lvim.builtin.terminal.on_config_done(terminal)
- end
end
M.add_exec = function(opts)
diff --git a/lua/lvim/core/treesitter.lua b/lua/lvim/core/treesitter.lua
index 456a2955..e44a39c7 100644
--- a/lua/lvim/core/treesitter.lua
+++ b/lua/lvim/core/treesitter.lua
@@ -2,9 +2,7 @@ local M = {}
local Log = require "lvim.core.log"
function M.config()
- lvim.builtin.treesitter = {
- on_config_done = nil,
-
+ local config = {
-- A list of parser names, or "all"
ensure_installed = {},
@@ -93,6 +91,8 @@ function M.config()
max_file_lines = 1000, -- Do not enable for files with more than 1000 lines, int
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.treesitter = config
end
function M.setup()
@@ -111,10 +111,6 @@ function M.setup()
local opts = vim.deepcopy(lvim.builtin.treesitter)
treesitter_configs.setup(opts)
-
- if lvim.builtin.treesitter.on_config_done then
- lvim.builtin.treesitter.on_config_done(treesitter_configs)
- end
end
return M
diff --git a/lua/lvim/core/which-key.lua b/lua/lvim/core/which-key.lua
index 8cedeabc..cfff800c 100644
--- a/lua/lvim/core/which-key.lua
+++ b/lua/lvim/core/which-key.lua
@@ -1,9 +1,6 @@
local M = {}
M.config = function()
- lvim.builtin.which_key = {
- ---@usage disable which-key completely [not recommended]
- active = true,
- on_config_done = nil,
+ local config = {
setup = {
plugins = {
marks = false, -- shows a list of your marks on ' and `
@@ -298,6 +295,8 @@ M.config = function()
},
},
}
+ ---@cast config +LvimBuiltin
+ lvim.builtin.which_key = config
end
M.setup = function()
@@ -313,10 +312,6 @@ M.setup = function()
which_key.register(mappings, opts)
which_key.register(vmappings, vopts)
-
- if lvim.builtin.which_key.on_config_done then
- lvim.builtin.which_key.on_config_done(which_key)
- end
end
return M
diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua
index f6abeeca..4cb9cf54 100644
--- a/lua/lvim/lsp/config.lua
+++ b/lua/lvim/lsp/config.lua
@@ -45,107 +45,115 @@ local skipped_servers = {
local skipped_filetypes = { "markdown", "rst", "plaintext", "toml", "proto" }
-local join_paths = require("lvim.utils").join_paths
+local M = {}
-return {
- templates_dir = join_paths(get_runtime_dir(), "site", "after", "ftplugin"),
- diagnostics = {
- signs = {
- active = true,
- values = {
- { name = "DiagnosticSignError", text = lvim.icons.diagnostics.Error },
- { name = "DiagnosticSignWarn", text = lvim.icons.diagnostics.Warning },
- { name = "DiagnosticSignHint", text = lvim.icons.diagnostics.Hint },
- { name = "DiagnosticSignInfo", text = lvim.icons.diagnostics.Information },
+M.config = function()
+ local join_paths = require("lvim.utils").join_paths
+
+ lvim.lsp = {
+ -- Function that gets called to configure lvim.lsp
+ config = nil,
+ templates_dir = join_paths(get_runtime_dir(), "site", "after", "ftplugin"),
+ diagnostics = {
+ signs = {
+ active = true,
+ values = {
+ { name = "DiagnosticSignError", text = lvim.icons.diagnostics.Error },
+ { name = "DiagnosticSignWarn", text = lvim.icons.diagnostics.Warning },
+ { name = "DiagnosticSignHint", text = lvim.icons.diagnostics.Hint },
+ { name = "DiagnosticSignInfo", text = lvim.icons.diagnostics.Information },
+ },
+ },
+ virtual_text = true,
+ update_in_insert = false,
+ underline = true,
+ severity_sort = true,
+ float = {
+ focusable = true,
+ style = "minimal",
+ border = "rounded",
+ source = "always",
+ header = "",
+ prefix = "",
+ format = function(d)
+ local code = d.code or (d.user_data and d.user_data.lsp.code)
+ if code then
+ return string.format("%s [%s]", d.message, code):gsub("1. ", "")
+ end
+ return d.message
+ end,
},
},
- virtual_text = true,
- update_in_insert = false,
- underline = true,
- severity_sort = true,
+ document_highlight = false,
+ code_lens_refresh = true,
float = {
focusable = true,
style = "minimal",
border = "rounded",
- source = "always",
- header = "",
- prefix = "",
- format = function(d)
- local code = d.code or (d.user_data and d.user_data.lsp.code)
- if code then
- return string.format("%s [%s]", d.message, code):gsub("1. ", "")
- end
- return d.message
- end,
},
- },
- document_highlight = false,
- code_lens_refresh = true,
- float = {
- focusable = true,
- style = "minimal",
- border = "rounded",
- },
- on_attach_callback = nil,
- on_init_callback = nil,
- automatic_configuration = {
- ---@usage list of servers that the automatic installer will skip
- skipped_servers = skipped_servers,
- ---@usage list of filetypes that the automatic installer will skip
- skipped_filetypes = skipped_filetypes,
- },
- buffer_mappings = {
- normal_mode = {
- ["K"] = { "<cmd>lua vim.lsp.buf.hover()<cr>", "Show hover" },
- ["gd"] = { "<cmd>lua vim.lsp.buf.definition()<cr>", "Goto Definition" },
- ["gD"] = { "<cmd>lua vim.lsp.buf.declaration()<cr>", "Goto declaration" },
- ["gr"] = { "<cmd>lua vim.lsp.buf.references()<cr>", "Goto references" },
- ["gI"] = { "<cmd>lua vim.lsp.buf.implementation()<cr>", "Goto Implementation" },
- ["gs"] = { "<cmd>lua vim.lsp.buf.signature_help()<cr>", "show signature help" },
- ["gl"] = {
- function()
- local config = lvim.lsp.diagnostics.float
- config.scope = "line"
- vim.diagnostic.open_float(0, config)
- end,
- "Show line diagnostics",
+ on_attach_callback = nil,
+ on_init_callback = nil,
+ automatic_configuration = {
+ ---@usage list of servers that the automatic installer will skip
+ skipped_servers = skipped_servers,
+ ---@usage list of filetypes that the automatic installer will skip
+ skipped_filetypes = skipped_filetypes,
+ },
+ buffer_mappings = {
+ normal_mode = {
+ ["K"] = { "<cmd>lua vim.lsp.buf.hover()<cr>", "Show hover" },
+ ["gd"] = { "<cmd>lua vim.lsp.buf.definition()<cr>", "Goto Definition" },
+ ["gD"] = { "<cmd>lua vim.lsp.buf.declaration()<cr>", "Goto declaration" },
+ ["gr"] = { "<cmd>lua vim.lsp.buf.references()<cr>", "Goto references" },
+ ["gI"] = { "<cmd>lua vim.lsp.buf.implementation()<cr>", "Goto Implementation" },
+ ["gs"] = { "<cmd>lua vim.lsp.buf.signature_help()<cr>", "show signature help" },
+ ["gl"] = {
+ function()
+ local config = lvim.lsp.diagnostics.float
+ config.scope = "line"
+ vim.diagnostic.open_float(0, config)
+ end,
+ "Show line diagnostics",
+ },
},
+ insert_mode = {},
+ visual_mode = {},
},
- insert_mode = {},
- visual_mode = {},
- },
- buffer_options = {
- --- enable completion triggered by <c-x><c-o>
- omnifunc = "v:lua.vim.lsp.omnifunc",
- --- use gq for formatting
- formatexpr = "v:lua.vim.lsp.formatexpr(#{timeout_ms:500})",
- },
- ---@usage list of settings of nvim-lsp-installer
- installer = {
- setup = {
- ensure_installed = {},
- automatic_installation = {
- exclude = {},
+ buffer_options = {
+ --- enable completion triggered by <c-x><c-o>
+ omnifunc = "v:lua.vim.lsp.omnifunc",
+ --- use gq for formatting
+ formatexpr = "v:lua.vim.lsp.formatexpr(#{timeout_ms:500})",
+ },
+ ---@usage list of settings of nvim-lsp-installer
+ installer = {
+ setup = {
+ ensure_installed = {},
+ automatic_installation = {
+ exclude = {},
+ },
},
},
- },
- nlsp_settings = {
- setup = {
- config_home = join_paths(get_config_dir(), "lsp-settings"),
- -- set to false to overwrite schemastore.nvim
- append_default_schemas = true,
- ignored_servers = {},
- loader = "json",
+ nlsp_settings = {
+ setup = {
+ config_home = join_paths(get_config_dir(), "lsp-settings"),
+ -- set to false to overwrite schemastore.nvim
+ append_default_schemas = true,
+ ignored_servers = {},
+ loader = "json",
+ },
},
- },
- null_ls = {
- setup = {
- debug = false,
+ null_ls = {
+ setup = {
+ debug = false,
+ },
+ config = {},
},
- config = {},
- },
- ---@deprecated use lvim.lsp.automatic_configuration.skipped_servers instead
- override = {},
- ---@deprecated use lvim.lsp.installer.setup.automatic_installation instead
- automatic_servers_installation = nil,
-}
+ ---@deprecated use lvim.lsp.automatic_configuration.skipped_servers instead
+ override = {},
+ ---@deprecated use lvim.lsp.installer.setup.automatic_installation instead
+ automatic_servers_installation = nil,
+ }
+end
+
+return M
diff --git a/lua/lvim/lsp/init.lua b/lua/lvim/lsp/init.lua
index b997b171..03650a99 100644
--- a/lua/lvim/lsp/init.lua
+++ b/lua/lvim/lsp/init.lua
@@ -89,6 +89,11 @@ end
function M.setup()
Log:debug "Setting up LSP support"
+ require("lvim.lsp.config").config()
+ if type(lvim.lsp.config) == "function" then
+ lvim.lsp.config()
+ end
+
local lsp_status_ok, _ = pcall(require, "lspconfig")
if not lsp_status_ok then
return
diff --git a/lua/lvim/plugin-loader.lua b/lua/lvim/plugin-loader.lua
index 31b2e6dd..56021875 100644
--- a/lua/lvim/plugin-loader.lua
+++ b/lua/lvim/plugin-loader.lua
@@ -46,7 +46,7 @@ function plugin_loader.init(opts)
end
vim.opt.runtimepath:append(lazy_install_dir)
- vim.opt.runtimepath:append(join_paths(plugins_dir, "*"))
+ -- vim.opt.runtimepath:append(join_paths(plugins_dir, "*"))
local lazy_cache = require "lazy.core.cache"
lazy_cache.setup {
@@ -101,7 +101,7 @@ function plugin_loader.load(configurations)
end
-- remove plugins from rtp before loading lazy, so that all plugins won't be loaded on startup
- vim.opt.runtimepath:remove(join_paths(plugins_dir, "*"))
+ -- vim.opt.runtimepath:remove(join_paths(plugins_dir, "*"))
local status_ok = xpcall(function()
local opts = {
diff --git a/lua/lvim/plugins.lua b/lua/lvim/plugins.lua
index 27a90c7d..425e8559 100644
--- a/lua/lvim/plugins.lua
+++ b/lua/lvim/plugins.lua
@@ -12,7 +12,7 @@ local core_plugins = {
{
"williamboman/mason.nvim",
config = function()
- require("lvim.core.mason").setup()
+ require("lvim.core.builtins").setup "mason"
end,
lazy = true,
},
@@ -33,7 +33,7 @@ local core_plugins = {
"nvim-telescope/telescope.nvim",
branch = "0.1.x",
config = function()
- require("lvim.core.telescope").setup()
+ require("lvim.core.builtins").setup "telescope"
end,
dependencies = { "telescope-fzf-native.nvim" },
lazy = true,
@@ -46,7 +46,7 @@ local core_plugins = {
"hrsh7th/nvim-cmp",
config = function()
if lvim.builtin.cmp then
- require("lvim.core.cmp").setup()
+ require("lvim.core.builtins").setup "cmp"
end
end,
event = { "InsertEnter", "CmdlineEnter" },
@@ -101,7 +101,7 @@ local core_plugins = {
"windwp/nvim-autopairs",
event = "InsertEnter",
config = function()
- require("lvim.core.autopairs").setup()
+ require("lvim.core.builtins").setup "autopairs"
end,
enabled = lvim.builtin.autopairs.active,
},
@@ -114,7 +114,7 @@ local core_plugins = {
local utils = require "lvim.utils"
local path = utils.join_paths(get_runtime_dir(), "site", "pack", "lazy", "opt", "nvim-treesitter")
vim.opt.rtp:prepend(path) -- treesitter needs to be before nvim's runtime in rtp
- require("lvim.core.treesitter").setup()
+ require("lvim.core.builtins").setup "treesitter"
end,
event = "User FileOpened",
dependencies = "nvim-ts-context-commentstring",
@@ -128,7 +128,7 @@ local core_plugins = {
{
"kyazdani42/nvim-tree.lua",
config = function()
- require("lvim.core.nvimtree").setup()
+ require("lvim.core.builtins").setup "nvimtree"
end,
enabled = lvim.builtin.nvimtree.active,
cmd = { "NvimTreeToggle", "NvimTreeOpen", "NvimTreeFocus", "NvimTreeFindFileToggle" },
@@ -138,7 +138,7 @@ local core_plugins = {
{
"tamago324/lir.nvim",
config = function()
- require("lvim.core.lir").setup()
+ require("lvim.core.builtins").setup "lir"
end,
enabled = lvim.builtin.lir.active,
event = "User DirOpened",
@@ -146,7 +146,7 @@ local core_plugins = {
{
"lewis6991/gitsigns.nvim",
config = function()
- require("lvim.core.gitsigns").setup()
+ require("lvim.core.builtins").setup "gitsigns"
end,
event = "User FileOpened",
enabled = lvim.builtin.gitsigns.active,
@@ -156,7 +156,7 @@ local core_plugins = {
{
"folke/which-key.nvim",
config = function()
- require("lvim.core.which-key").setup()
+ require("lvim.core.builtins").setup "which-key"
end,
event = "VeryLazy",
enabled = lvim.builtin.which_key.active,
@@ -166,7 +166,7 @@ local core_plugins = {
{
"numToStr/Comment.nvim",
config = function()
- require("lvim.core.comment").setup()
+ require("lvim.core.builtins").setup "comment"
end,
keys = { { "gc", mode = { "n", "v" } }, { "gb", mode = { "n", "v" } } },
event = "User FileOpened",
@@ -176,8 +176,9 @@ local core_plugins = {
-- project.nvim
{
"ahmedkhalf/project.nvim",
+ event = "VeryLazy",
config = function()
- require("lvim.core.project").setup()
+ require("lvim.core.builtins").setup "project"
end,
enabled = lvim.builtin.project.active,
},
@@ -195,9 +196,9 @@ local core_plugins = {
"nvim-lualine/lualine.nvim",
-- "Lunarvim/lualine.nvim",
config = function()
- require("lvim.core.lualine").setup()
+ require("lvim.core.builtins").setup "lualine"
end,
- event = "VimEnter",
+ event = "User FileOpened",
enabled = lvim.builtin.lualine.active,
},
@@ -205,7 +206,7 @@ local core_plugins = {
{
"SmiteshP/nvim-navic",
config = function()
- require("lvim.core.breadcrumbs").setup()
+ require("lvim.core.builtins").setup "breadcrumbs"
end,
event = "User FileOpened",
enabled = lvim.builtin.breadcrumbs.active,
@@ -214,7 +215,7 @@ local core_plugins = {
{
"akinsho/bufferline.nvim",
config = function()
- require("lvim.core.bufferline").setup()
+ require("lvim.core.builtins").setup "bufferline"
end,
branch = "main",
event = "User FileOpened",
@@ -225,7 +226,7 @@ local core_plugins = {
{
"mfussenegger/nvim-dap",
config = function()
- require("lvim.core.dap").setup()
+ require("lvim.core.builtins").setup "dap"
end,
enabled = lvim.builtin.dap.active,
event = "User FileOpened",
@@ -245,7 +246,7 @@ local core_plugins = {
{
"goolord/alpha-nvim",
config = function()
- require("lvim.core.alpha").setup()
+ require("lvim.core.builtins").setup "alpha"
end,
enabled = lvim.builtin.alpha.active,
},
@@ -256,7 +257,7 @@ local core_plugins = {
event = "VeryLazy",
branch = "main",
config = function()
- require("lvim.core.terminal").setup()
+ require("lvim.core.builtins").setup "terminal"
end,
enabled = lvim.builtin.terminal.active,
},
@@ -270,7 +271,7 @@ local core_plugins = {
{
"RRethy/vim-illuminate",
config = function()
- require("lvim.core.illuminate").setup()
+ require("lvim.core.builtins").setup "illuminate"
end,
event = "User FileOpened",
enabled = lvim.builtin.illuminate.active,
@@ -279,7 +280,7 @@ local core_plugins = {
{
"lukas-reineke/indent-blankline.nvim",
config = function()
- require("lvim.core.indentlines").setup()
+ require("lvim.core.builtins").setup "indentlines"
end,
event = "User FileOpened",
enabled = lvim.builtin.indentlines.active,
@@ -299,15 +300,16 @@ local core_plugins = {
lazy = lvim.colorscheme ~= "onedarker",
},
- {
- "lunarvim/bigfile.nvim",
- config = function()
- pcall(function()
- require("bigfile").config(lvim.builtin.bigfile.config)
- end)
- end,
- enabled = lvim.builtin.bigfile.active,
- },
+ -- TODO: add option in bigfile to not require treesitter
+ -- {
+ -- "lunarvim/bigfile.nvim",
+ -- config = function()
+ -- pcall(function()
+ -- require("bigfile").config(lvim.builtin.bigfile.config)
+ -- end)
+ -- end,
+ -- enabled = lvim.builtin.bigfile.active,
+ -- },
}
local default_snapshot_path = join_paths(get_lvim_base_dir(), "snapshots", "default.json")