avoid un-needed lazy loading of packer | improve packer bootstrapping

This commit is contained in:
siduck 2022-05-23 12:54:03 +05:30
parent bdf45a447a
commit a2ff5c285e
10 changed files with 116 additions and 214 deletions

View file

@ -1,73 +0,0 @@
local autocmd = vim.api.nvim_create_autocmd
-- Disable statusline in dashboard
autocmd("FileType", {
pattern = "alpha",
callback = function()
vim.opt.laststatus = 0
end,
})
autocmd("BufUnload", {
buffer = 0,
callback = function()
vim.opt.laststatus = 3
end,
})
-- open nvim with a dir while still lazy loading nvimtree
-- autocmd("BufEnter", {
-- callback = function()
-- if vim.api.nvim_buf_get_option(0, "buftype") ~= "terminal" then
-- vim.cmd "lcd %:p:h"
-- end
-- end,
-- })
-- Use relative & absolute line numbers in 'n' & 'i' modes respectively
-- autocmd("InsertEnter", {
-- callback = function()
-- vim.opt.relativenumber = false
-- end,
-- })
-- autocmd("InsertLeave", {
-- callback = function()
-- vim.opt.relativenumber = true
-- end,
-- })
-- Open a file from its last left off position
-- autocmd("BufReadPost", {
-- callback = function()
-- if not vim.fn.expand("%:p"):match ".git" and vim.fn.line "'\"" > 1 and vim.fn.line "'\"" <= vim.fn.line "$" then
-- vim.cmd "normal! g'\""
-- vim.cmd "normal zz"
-- end
-- end,
-- })
-- File extension specific tabbing
-- autocmd("Filetype", {
-- pattern = "python",
-- callback = function()
-- vim.opt_local.expandtab = true
-- vim.opt_local.tabstop = 4
-- vim.opt_local.shiftwidth = 4
-- vim.opt_local.softtabstop = 4
-- end,
-- })
-- Highlight yanked text
-- autocmd("TextYankPost", {
-- callback = function()
-- vim.highlight.on_yank { higroup = "Visual", timeout = 200 }
-- end,
-- })
-- Enable spellchecking in markdown, text and gitcommit files
-- autocmd("FileType", {
-- pattern = { "gitcommit", "markdown", "text" },
-- callback = function()
-- vim.opt_local.spell = true
-- end,
-- })

View file

@ -1,37 +0,0 @@
local user_cmd = vim.api.nvim_create_user_command
local cmd = vim.cmd
-- snapshot stuff
user_cmd("PackerSnapshot", function(info)
require "plugins"
require("packer").snapshot(info.args)
end, { nargs = "+" })
user_cmd("PackerSnapshotDelete", function(info)
require "plugins"
require("packer.snapshot").delete(info.args)
end, { nargs = "+" })
user_cmd("PackerSnapshotRollback", function(info)
require "plugins"
require("packer").rollback(info.args)
end, { nargs = "+" })
-- Add Packer commands because we are not loading it at startup
local packer_cmd = function(callback)
return function()
require "plugins"
require("packer")[callback]()
end
end
user_cmd("PackerClean", packer_cmd "clean", {})
user_cmd("PackerCompile", packer_cmd "compile", {})
user_cmd("PackerInstall", packer_cmd "install", {})
user_cmd("PackerStatus", packer_cmd "status", {})
user_cmd("PackerSync", packer_cmd "sync", {})
user_cmd("PackerUpdate", packer_cmd "update", {})
-- add NvChadUpdate command and mapping
cmd "silent! command! NvChadUpdate lua require('nvchad').update_nvchad()"

18
lua/core/init.lua Normal file
View file

@ -0,0 +1,18 @@
vim.cmd "silent! command! NvChadUpdate lua require('nvchad').update_nvchad()"
local autocmd = vim.api.nvim_create_autocmd
-- Disable statusline in dashboard
autocmd("FileType", {
pattern = "alpha",
callback = function()
vim.opt.laststatus = 0
end,
})
autocmd("BufUnload", {
buffer = 0,
callback = function()
vim.opt.laststatus = 3
end,
})

62
lua/core/packer.lua Normal file
View file

@ -0,0 +1,62 @@
local M = {}
M.bootstrap = function()
local fn = vim.fn
local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim"
vim.api.nvim_set_hl(0, "NormalFloat", { bg = "#1e222a" })
if fn.empty(fn.glob(install_path)) > 0 then
print "Cloning packer .."
fn.system { "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path }
print "Packer cloned successfully!"
-- install plugins + compile their configs
vim.cmd "packadd packer.nvim"
require "plugins"
vim.cmd "PackerSync"
end
end
M.options = {
auto_clean = true,
compile_on_sync = true,
git = { clone_timeout = 6000 },
display = {
working_sym = "",
error_sym = "",
done_sym = "",
removed_sym = "",
moved_sym = "",
open_fn = function()
return require("packer.util").float { border = "single" }
end,
},
}
-- merge overrides if there are any
M.options = nvchad.load_override(M.options, "wbthomason/packer.nvim")
M.run = function(plugins)
local present, packer = pcall(require, "packer")
if not present then
return
end
-- Override with chadrc values
plugins = nvchad.remove_default_plugins(plugins)
plugins = nvchad.merge_plugins(plugins)
packer.init(M.options)
packer.startup(function(use)
for _, v in pairs(plugins) do
use(v)
end
end)
end
return M

View file

@ -28,12 +28,16 @@ nvchad.load_config = function()
-- attempt to load and merge a user config
local chadrc_exists = vim.fn.filereadable(vim.fn.stdpath "config" .. "/lua/custom/chadrc.lua") == 1
if chadrc_exists then
-- merge user config if it exists and is a table; otherwise display an error
local user_config = require "custom.chadrc"
if type(user_config) == "table" then
conf.mappings = conf.mappings and nvchad.prune_key_map(conf.mappings, user_config.mappings, ignore_modes) or {}
user_config.mappings = user_config.mappings and nvchad.prune_key_map(user_config.mappings, "rm_disabled", ignore_modes) or {}
user_config.mappings = user_config.mappings
and nvchad.prune_key_map(user_config.mappings, "rm_disabled", ignore_modes)
or {}
conf = vim.tbl_deep_extend("force", conf, user_config)
else
error "User config (chadrc.lua) *must* return a table!"
@ -46,6 +50,7 @@ end
-- reduces a given keymap to a table of modes each containing a list of key maps
nvchad.reduce_key_map = function(key_map, ignore_modes)
local prune_keys = {}
for _, modes in pairs(key_map) do
for mode, mappings in pairs(modes) do
if not vim.tbl_contains(ignore_modes, mode) then
@ -60,23 +65,32 @@ end
-- remove disabled mappings from a given key map
nvchad.remove_disabled_mappings = function(key_map)
local clean_map = {}
if key_map == nil or key_map == "" then
return key_map
end
if type(key_map) == "table" then
for k, v in pairs(key_map) do
if v ~= nil and v ~= "" then clean_map[k] = v end
if v ~= nil and v ~= "" then
clean_map[k] = v
end
end
end
return clean_map
end
-- prune keys from a key map table by matching against another key map table
nvchad.prune_key_map = function(key_map, prune_map, ignore_modes)
if not prune_map then return key_map end
if not key_map then return prune_map end
if not prune_map then
return key_map
end
if not key_map then
return prune_map
end
local prune_keys = type(prune_map) == "table" and nvchad.reduce_key_map(prune_map, ignore_modes)
or { n = {}, v = {}, i = {}, t = {} }
or { n = {}, v = {}, i = {}, t = {} }
for ext, modes in pairs(key_map) do
for mode, mappings in pairs(modes) do
@ -155,7 +169,7 @@ nvchad.remove_default_plugins = function(plugins)
end
-- merge default/user plugin tables
nvchad.plugin_list = function(default_plugins)
nvchad.merge_plugins = function(default_plugins)
local user_plugins = nvchad.load_config().plugins.user
-- merge default + user plugin table