From e0f1cb3687b3aa07c95b76e16e1ace4f47efbeff Mon Sep 17 00:00:00 2001 From: Akianonymus Date: Tue, 3 Aug 2021 08:59:45 +0530 Subject: [PATCH 1/2] theme_switcher: Handle some edgecases | Clear cmdline after default theme prompt --- lua/telescope/_extensions/themes.lua | 28 +++++++++++++++++++--------- lua/utils.lua | 21 ++++++++++++++++++--- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/lua/telescope/_extensions/themes.lua b/lua/telescope/_extensions/themes.lua index e2aaa6e..2f0e4d6 100644 --- a/lua/telescope/_extensions/themes.lua +++ b/lua/telescope/_extensions/themes.lua @@ -12,7 +12,8 @@ M.reload_theme = function(theme_name) end if not pcall(require, "themes/" .. theme_name) then - error("No such theme ( " .. theme_name .. " )") + print("No such theme ( " .. theme_name .. " )") + return false end vim.g.nvchad_theme = theme_name @@ -20,16 +21,22 @@ M.reload_theme = function(theme_name) -- reload the base16 theme local ok, base16 = pcall(require, "base16") if not ok then - error("Error: Cannot load base16 plugin!") + print("Error: Cannot load base16 plugin!") + return false end base16(base16.themes[theme_name], true) - reload_plugin { - "highlights", - "plugins.bufferline", - "galaxyline", - "plugins.statusline" - } + if + not reload_plugin { + "highlights", + "plugins.bufferline", + "galaxyline", + "plugins.statusline" + } + then + print "Error: Not able to reload all plugins." + return false + end -- now send the provider info to actual refresh require("galaxyline.provider").async_load_providers:send() @@ -152,6 +159,7 @@ M.theme_switcher = function(opts) if change then -- ask for confirmation to set as default theme local ans = string.lower(vim.fn.input("Set " .. new_theme .. " as default theme ? [y/N] ")) == "y" + local_utils.clear_cmdline() if ans then local_utils.change_theme(current_theme, final_theme) else @@ -161,9 +169,11 @@ M.theme_switcher = function(opts) end -- open a buffer and close it to reload the statusline vim.cmd("new|bwipeout") + else + final_theme = current_theme end -- set nvchad_theme global var - vim.g.nvchad_theme = current_theme + vim.g.nvchad_theme = final_theme end -- launch the telescope picker picker:find() diff --git a/lua/utils.lua b/lua/utils.lua index e86b895..87e1e48 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -2,14 +2,17 @@ local M = {} -- reload a plugin ( will try to load even if not loaded) -- can take a string or list ( table ) +-- return true or false M.reload_plugin = function(plugins) + local status = true local function _reload_plugin(plugin) local loaded = package.loaded[plugin] if loaded then package.loaded[plugin] = nil end if not pcall(require, plugin) then - error("Error: Cannot load " .. plugin .. " plugin!") + print("Error: Cannot load " .. plugin .. " plugin!") + status = false end end @@ -20,6 +23,7 @@ M.reload_plugin = function(plugins) _reload_plugin(plugin) end end + return status end -- return a table of available themes @@ -73,7 +77,8 @@ end -- 1st arg as current theme, 2nd as new theme M.change_theme = function(current_theme, new_theme) if current_theme == nil or new_theme == nil then - error "Provide current and new theme name" + print "Error: Provide current and new theme name" + return false end if current_theme == new_theme then return @@ -87,10 +92,20 @@ M.change_theme = function(current_theme, new_theme) local content = string.gsub(data, find, replace) -- see if the find string exists in file if content == data then - error("Cannot change default theme with " .. new_theme .. ", edit " .. file .. " manually") + print("Error: Cannot change default theme with " .. new_theme .. ", edit " .. file .. " manually") + return false else assert(M.file("w", file, content)) end end +M.clear_cmdline = function() + vim.defer_fn( + function() + vim.cmd("echo") + end, + 0 + ) +end + return M From a25f4fca70e412a84d335e48366ae63e6cd7a68f Mon Sep 17 00:00:00 2001 From: Akianonymus Date: Tue, 3 Aug 2021 09:38:50 +0530 Subject: [PATCH 2/2] Just packer shenanigans --- install.sh | 5 +++-- lua/plugins/telescope.lua | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index 31d0264..4f3742e 100755 --- a/install.sh +++ b/install.sh @@ -157,8 +157,9 @@ main() { if _NVIM="$(command -v nvim)"; then if _check_nvim_version; then printf "\n%s\n" "=> Neovim will now open." && sleep 1 - "${_NVIM}" +"autocmd User PackerComplete ++once quitall" \ - +":lua require 'pluginList' vim.cmd('PackerSync')" + "${_NVIM}" +'autocmd User PackerComplete ++once lua print "Waiting for PackerCompile.." vim.cmd "PackerCompile"' \ + +'autocmd User PackerCompileDone ++once quitall' \ + +'lua print "Wait for PackerUpdate and PackerCompile to complete.." require "pluginList" vim.cmd "PackerUpdate"' "${_NVIM}" else printf "Error: Neovim is installed, but version is lower than 0.5.x, install Neovim >= 5.x and then run nvim & do :PackerSync\n." diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua index 80ba398..d3a9447 100644 --- a/lua/plugins/telescope.lua +++ b/lua/plugins/telescope.lua @@ -78,10 +78,11 @@ if end ) then - -- This should only trigger when in need of PackerSync, so better do it - print("After completion of PackerSync, restart neovim.") + -- This should only trigger when in need of PackerSync, so better do it + print("After completion of PackerCompile, restart neovim.") -- Trigger packer compile on PackerComplete, so it properly waits for PackerSync - vim.cmd 'autocmd User PackerComplete ++once lua require("packer").compile()' + vim.cmd 'autocmd User PackerComplete ++once lua print "Waiting for PackerCompile.." require("packer").compile()' + vim.cmd 'autocmd User PackerCompileDone ++once echo "Packer Compile done, restart neovim."' require "pluginList" - require("packer").sync("telescope-fzf-native.nvim", "telescope-media-files.nvim") + require("packer").update("telescope-fzf-native.nvim", "telescope-media-files.nvim") end