summaryrefslogtreecommitdiff
path: root/lua/bootstrap.lua
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2021-10-07 17:47:53 +0200
committerGitHub <[email protected]>2021-10-07 17:47:53 +0200
commitc0e3c8d43ae6ca011e4036329ae31115957d1394 (patch)
treef989edf2203b225d407dd53b7bef95a589d6e123 /lua/bootstrap.lua
parent0ad60e90a9b0dd557df10f73bec344e88549a9d7 (diff)
feat(lsp): handle user configuration in setup() (#1707)
Diffstat (limited to 'lua/bootstrap.lua')
-rw-r--r--lua/bootstrap.lua49
1 files changed, 23 insertions, 26 deletions
diff --git a/lua/bootstrap.lua b/lua/bootstrap.lua
index 43ce44d5..866403b7 100644
--- a/lua/bootstrap.lua
+++ b/lua/bootstrap.lua
@@ -1,6 +1,7 @@
local M = {}
-local in_headless = #vim.api.nvim_list_uis() == 0
+package.loaded["utils.hooks"] = nil
+local _, hooks = pcall(require, "utils.hooks")
---Join path segments that were passed as input
---@return string
@@ -42,12 +43,23 @@ function _G.get_cache_dir()
return lvim_cache_dir
end
+---Get the full path to the currently installed lunarvim repo
+---@return string
+local function get_install_path()
+ local lvim_runtime_dir = os.getenv "LUNARVIM_RUNTIME_DIR"
+ if not lvim_runtime_dir then
+ -- when nvim is used directly
+ return vim.fn.stdpath "config"
+ end
+ return join_paths(lvim_runtime_dir, "lvim")
+end
+
---Get currently installed version of LunarVim
---@param type string can be "short"
---@return string
function _G.get_version(type)
type = type or ""
- local lvim_full_ver = vim.fn.system("git -C " .. get_runtime_dir() .. "/lvim describe --tags")
+ local lvim_full_ver = vim.fn.system("git -C " .. get_install_path() .. " describe --tags")
if string.match(lvim_full_ver, "%d") == nil then
return nil
@@ -65,7 +77,7 @@ function M:init()
self.runtime_dir = get_runtime_dir()
self.config_dir = get_config_dir()
self.cache_path = get_cache_dir()
- self.repo_dir = join_paths(self.runtime_dir, "lvim")
+ self.install_path = get_install_path()
self.pack_dir = join_paths(self.runtime_dir, "site", "pack")
self.packer_install_dir = join_paths(self.runtime_dir, "site", "pack", "packer", "start", "packer.nvim")
@@ -113,23 +125,15 @@ end
---Update LunarVim
---pulls the latest changes from github and, resets the startup cache
function M:update()
+ hooks.run_pre_update()
M:update_repo()
- M:reset_cache()
- require("lsp.templates").generate_templates()
- if not in_headless then
- vim.schedule(function()
- require("packer").install()
- -- TODO: add a changelog
- vim.notify("Update complete", vim.log.levels.INFO)
- end)
- end
+ hooks.run_post_update()
end
local function git_cmd(subcmd)
local Job = require "plenary.job"
local Log = require "core.log"
- local repo_dir = join_paths(get_runtime_dir(), "lvim")
- local args = { "-C", repo_dir }
+ local args = { "-C", get_install_path() }
vim.list_extend(args, subcmd)
local stderr = {}
@@ -137,7 +141,7 @@ local function git_cmd(subcmd)
:new({
command = "git",
args = args,
- cwd = repo_dir,
+ cwd = get_install_path(),
on_stderr = function(_, data)
table.insert(stderr, data)
end,
@@ -167,7 +171,8 @@ function M:update_repo()
local ret = git_cmd(sub_commands.fetch)
if ret ~= 0 then
- error "Update failed! Check the log for further information"
+ Log:error "Update failed! Check the log for further information"
+ return
end
ret = git_cmd(sub_commands.diff)
@@ -180,17 +185,9 @@ function M:update_repo()
ret = git_cmd(sub_commands.merge)
if ret ~= 0 then
- error "Error: unable to guarantee data integrity while updating your branch"
- error "Please pull the changes manually instead."
+ Log:error "Update failed! Please pull the changes manually instead."
+ return
end
end
----Reset any startup cache files used by Packer and Impatient
----Tip: Useful for clearing any outdated settings
-function M:reset_cache()
- _G.__luacache.clear_cache()
- _G.__luacache.save_cache()
- require("plugin-loader"):cache_reset()
-end
-
return M