diff options
| author | kylo252 <[email protected]> | 2021-12-11 20:18:16 +0100 | 
|---|---|---|
| committer | kylo252 <[email protected]> | 2021-12-11 20:18:16 +0100 | 
| commit | fc756d8151b2f55044b8049807d199fbfb01b3bf (patch) | |
| tree | 54ff77f66315abdc440802ceb535662a5c4eabf4 /lua/lvim/utils | |
| parent | 3a2d62ed2510ca05eb6ea87240a86df82338f5aa (diff) | |
| parent | f7d883b6b92d66c222fd0d4e3d398c1f4fcea882 (diff) | |
Merge remote-tracking branch 'origin/rolling' into release-candidate
Diffstat (limited to 'lua/lvim/utils')
| -rw-r--r-- | lua/lvim/utils/hooks.lua | 61 | ||||
| -rw-r--r-- | lua/lvim/utils/init.lua | 62 | 
2 files changed, 81 insertions, 42 deletions
| diff --git a/lua/lvim/utils/hooks.lua b/lua/lvim/utils/hooks.lua index 0fe4a7fd..9b02b958 100644 --- a/lua/lvim/utils/hooks.lua +++ b/lua/lvim/utils/hooks.lua @@ -1,42 +1,75 @@  local M = {} -local plugin_loader = require "lvim.plugin-loader"  local Log = require "lvim.core.log"  local in_headless = #vim.api.nvim_list_uis() == 0  function M.run_pre_update()    Log:debug "Starting pre-update hook" -  _G.__luacache.clear_cache() -  vim.cmd "LspStop" +  if package.loaded["lspconfig"] then +    vim.cmd [[ LspStop ]] +  end +end + +function M.run_pre_reload() +  Log:debug "Starting pre-reload hook" +  if package.loaded["lspconfig"] then +    vim.cmd [[ LspStop ]] +  end +end + +function M.run_on_packer_complete() +  require("lvim.plugin-loader").recompile() +  -- forcefully activate nvim-web-devicons +  require("nvim-web-devicons").set_up_highlights() +  Log:info "Reloaded configuration" +end + +function M.run_post_reload() +  Log:debug "Starting post-reload hook" +  if package.loaded["lspconfig"] then +    vim.cmd [[ LspRestart ]] +  end + +  M.reset_cache() +  require("lvim.plugin-loader").ensure_installed()  end  ---Reset any startup cache files used by Packer and Impatient  ---It also forces regenerating any template ftplugin files  ---Tip: Useful for clearing any outdated settings  function M.reset_cache() -  _G.__luacache.clear_cache() -  require("lvim.plugin-loader").recompile() -  package.loaded["lvim.lsp.templates"] = nil - -  Log:debug "Re-generatring ftplugin template files" +  local impatient = _G.__luacache +  if impatient then +    impatient.clear_cache() +  end +  local lvim_modules = {} +  for module, _ in pairs(package.loaded) do +    if module:match "lvim.core" or module:match "lvim.lsp" then +      package.loaded[module] = nil +      table.insert(lvim_modules, module) +    end +  end +  Log:trace(string.format("Cache invalidated for core modules: { %s }", table.concat(lvim_modules, ", ")))    require("lvim.lsp.templates").generate_templates()  end  function M.run_post_update()    Log:debug "Starting post-update hook" - -  Log:debug "Re-generatring ftplugin template files" -  package.loaded["lvim.lsp.templates"] = nil -  require("lvim.lsp.templates").generate_templates() +  M.reset_cache()    Log:debug "Updating core plugins" -  plugin_loader:sync_core_plugins() +  require("lvim.plugin-loader").ensure_installed()    if not in_headless then      vim.schedule(function() +      if package.loaded["nvim-treesitter"] then +        vim.cmd [[ TSUpdateSync ]] +      end        -- TODO: add a changelog        vim.notify("Update complete", vim.log.levels.INFO) -      vim.cmd "LspRestart" +      if package.loaded["lspconfig"] then +        vim.cmd [[ LspRestart ]] +      end      end)    end  end diff --git a/lua/lvim/utils/init.lua b/lua/lvim/utils/init.lua index cebbe75c..cafcf506 100644 --- a/lua/lvim/utils/init.lua +++ b/lua/lvim/utils/init.lua @@ -1,5 +1,4 @@  local utils = {} -local Log = require "lvim.core.log"  local uv = vim.loop  -- recursive Print (structure, limit, separator) @@ -58,31 +57,6 @@ function utils.generate_settings()    io.close(file)  end --- autoformat -function utils.toggle_autoformat() -  if lvim.format_on_save then -    require("lvim.core.autocmds").define_augroups { -      autoformat = { -        { -          "BufWritePre", -          "*", -          ":silent lua vim.lsp.buf.formatting_sync()", -        }, -      }, -    } -    Log:debug "Format on save active" -  end - -  if not lvim.format_on_save then -    vim.cmd [[ -      if exists('#autoformat#BufWritePre') -        :autocmd! autoformat -      endif -    ]] -    Log:debug "Format on save off" -  end -end -  function utils.unrequire(m)    package.loaded[m] = nil    _G[m] = nil @@ -200,6 +174,38 @@ function utils.log_contains(query)    return false  end -return utils +function utils.generate_plugins_sha(output) +  local list = {} +  output = output or "commits.lua" + +  local function git_cmd(args) +    local Job = require "plenary.job" +    local stderr = {} +    local stdout, ret = Job +      :new({ +        command = "git", +        args = args, +        on_stderr = function(_, data) +          table.insert(stderr, data) +        end, +      }) +      :sync() +    return ret, stdout +  end + +  local core_plugins = require "lvim.plugins" +  for _, plugin in pairs(core_plugins) do +    local name = plugin[1]:match "/(%S*)" +    local url = "https://github.com/" .. plugin[1] +    print("checking: " .. name .. ", at: " .. url) +    local retval, latest_sha = git_cmd { "ls-remote", url, "origin", "HEAD" } +    if retval == 0 then +      -- replace dashes, remove postfixes and use lowercase +      local normalize_name = (name:gsub("-", "_"):gsub("%.%S+", "")):lower() +      list[normalize_name] = latest_sha[1]:gsub("\tHEAD", "") +    end +  end +  utils.write_file(output, "local commit = " .. vim.inspect(list), "w") +end --- TODO: find a new home for these autocommands +return utils | 
