Sfoglia il codice sorgente

fix(config): more comprehensive cache reset (#3416)

kylo252 2 anni fa
parent
commit
153593ff51
2 ha cambiato i file con 29 aggiunte e 21 eliminazioni
  1. 23 17
      lua/lvim/plugin-loader.lua
  2. 6 4
      lua/lvim/utils/hooks.lua

+ 23 - 17
lua/lvim/plugin-loader.lua

@@ -69,17 +69,31 @@ local function pcall_packer_command(cmd, kwargs)
 end
 
 function plugin_loader.cache_clear()
+  if not utils.is_file(compile_path) then
+    return
+  end
   if vim.fn.delete(compile_path) == 0 then
     Log:debug "deleted packer_compiled.lua"
   end
 end
 
+function plugin_loader.compile()
+  Log:debug "calling packer.compile()"
+  vim.api.nvim_create_autocmd("User", {
+    pattern = "PackerCompileDone",
+    once = true,
+    callback = function()
+      if utils.is_file(compile_path) then
+        Log:debug "finished compiling packer_compiled.lua"
+      end
+    end,
+  })
+  pcall_packer_command "compile"
+end
+
 function plugin_loader.recompile()
   plugin_loader.cache_clear()
-  pcall_packer_command "compile"
-  if utils.is_file(compile_path) then
-    Log:debug "generated packer_compiled.lua"
-  end
+  plugin_loader.compile()
 end
 
 function plugin_loader.reload(configurations)
@@ -140,17 +154,10 @@ function plugin_loader.load_snapshot(snapshot_file)
 end
 
 function plugin_loader.sync_core_plugins()
-  -- problem: rollback() will get stuck if a plugin directory doesn't exist
-  -- solution: call sync() beforehand
-  -- see https://github.com/wbthomason/packer.nvim/issues/862
-  vim.api.nvim_create_autocmd("User", {
-    pattern = "PackerComplete",
-    once = true,
-    callback = function()
-      require("lvim.plugin-loader").load_snapshot(default_snapshot)
-    end,
-  })
-  pcall_packer_command "sync"
+  plugin_loader.cache_clear()
+  local core_plugins = plugin_loader.get_core_plugins()
+  Log:trace(string.format("Syncing core plugins: [%q]", table.concat(core_plugins, ", ")))
+  pcall_packer_command("sync", core_plugins)
 end
 
 function plugin_loader.ensure_plugins()
@@ -158,8 +165,7 @@ function plugin_loader.ensure_plugins()
     pattern = "PackerComplete",
     once = true,
     callback = function()
-      Log:debug "calling packer.clean()"
-      pcall_packer_command "clean"
+      plugin_loader.compile()
     end,
   })
   Log:debug "calling packer.install()"

+ 6 - 4
lua/lvim/utils/hooks.lua

@@ -2,6 +2,7 @@ local M = {}
 
 local Log = require "lvim.core.log"
 local in_headless = #vim.api.nvim_list_uis() == 0
+local plugin_loader = require "lvim.plugin-loader"
 
 function M.run_pre_update()
   Log:debug "Starting pre-update hook"
@@ -15,8 +16,9 @@ function M.run_on_packer_complete()
   Log:debug "Packer operation complete"
   vim.api.nvim_exec_autocmds("User", { pattern = "PackerComplete" })
 
-  vim.g.colors_name = lvim.colorscheme
-  pcall(vim.cmd, "colorscheme " .. lvim.colorscheme)
+  -- -- FIXME(kylo252): nvim-tree.lua/lua/nvim-tree/view.lua:442: Invalid window id
+  -- vim.g.colors_name = lvim.colorscheme
+  -- pcall(vim.cmd.colorscheme, lvim.colorscheme)
 
   if M._reload_triggered then
     Log:debug "Reloaded configuration"
@@ -26,7 +28,6 @@ end
 
 function M.run_post_reload()
   Log:debug "Starting post-reload hook"
-  M.reset_cache()
   M._reload_triggered = true
 end
 
@@ -35,6 +36,7 @@ end
 ---Tip: Useful for clearing any outdated settings
 function M.reset_cache()
   vim.cmd [[LuaCacheClear]]
+  plugin_loader.recompile()
   local lvim_modules = {}
   for module, _ in pairs(package.loaded) do
     if module:match "lvim.core" or module:match "lvim.lsp" then
@@ -68,7 +70,7 @@ function M.run_post_update()
   M.reset_cache()
 
   Log:debug "Syncing core plugins"
-  require("lvim.plugin-loader").sync_core_plugins()
+  plugin_loader.sync_core_plugins()
 
   if not in_headless then
     vim.schedule(function()