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

View file

@ -1,21 +1,12 @@
local present, packer = pcall(require, "plugins.packerInit")
if not present then
return false
end
local plugins = {
["nvim-lua/plenary.nvim"] = {},
["lewis6991/impatient.nvim"] = {},
["wbthomason/packer.nvim"] = {
event = "VimEnter",
},
["wbthomason/packer.nvim"] = {},
["NvChad/extensions"] = {},
["NvChad/base46"] = {
after = "packer.nvim",
after = "plenary.nvim",
config = function()
local ok, base46 = pcall(require, "base46")
@ -219,13 +210,4 @@ local plugins = {
},
}
plugins = nvchad.remove_default_plugins(plugins)
-- merge user plugin table & default plugin table
plugins = nvchad.plugin_list(plugins)
return packer.startup(function(use)
for _, v in pairs(plugins) do
use(v)
end
end)
require("core.packer").run(plugins)

View file

@ -1,48 +0,0 @@
vim.cmd "packadd packer.nvim"
local present, packer = pcall(require, "packer")
if not present then
local packer_path = vim.fn.stdpath "data" .. "/site/pack/packer/opt/packer.nvim"
print "Cloning packer.."
-- remove the dir before cloning
vim.fn.delete(packer_path, "rf")
vim.fn.system {
"git",
"clone",
"https://github.com/wbthomason/packer.nvim",
"--depth",
"20",
packer_path,
}
vim.cmd "packadd packer.nvim"
present, packer = pcall(require, "packer")
if present then
print "Packer cloned successfully."
else
error("Couldn't clone packer !\nPacker path: " .. packer_path .. "\n" .. packer)
end
end
local options = {
display = {
open_fn = function()
return require("packer.util").float { border = "single" }
end,
},
git = {
clone_timeout = 6000, -- seconds
},
auto_clean = true,
compile_on_sync = true,
snapshot = nil,
}
options = nvchad.load_override(options, "wbthomason/packer.nvim")
packer.init(options)
return packer