Files
nvim/init.lua
T

55 lines
1.6 KiB
Lua

-- Bootstrap Lazy.nvim and load config safely across environments
local uv = vim.uv or vim.loop
pcall(function()
if vim.loader then vim.loader.enable() end
end)
-- Set leaders early for consistency
vim.g.mapleader = " "
vim.g.maplocalleader = ","
-- Allow overriding lazy path via LAZY env
local lazypath = vim.env.LAZY or (vim.fn.stdpath "data" .. "/lazy/lazy.nvim")
-- Bootstrap lazy.nvim only if not provided via env and not installed
if not vim.env.LAZY and not (uv and uv.fs_stat(lazypath)) then
if vim.fn.executable "git" == 1 then
local result = vim.fn.system {
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable",
lazypath,
}
if vim.v.shell_error ~= 0 then vim.notify(("Error cloning lazy.nvim:\n%s"):format(result), vim.log.levels.ERROR) end
else
vim.notify("git not found; skipping lazy.nvim bootstrap", vim.log.levels.WARN)
end
end
-- Add to runtimepath if available, else exit quietly (headless-safe)
if uv and uv.fs_stat(lazypath) then
vim.opt.rtp:prepend(lazypath)
else
vim.notify(("lazy.nvim not available at %s"):format(lazypath), vim.log.levels.WARN)
return
end
-- validate that lazy is available
local ok_lazy = pcall(require, "lazy")
if not ok_lazy then
vim.notify(("Unable to load lazy from: %s"):format(lazypath), vim.log.levels.ERROR)
return
end
-- Load specs and final polish with guards
local ok_setup = pcall(require, "lazy_setup")
if not ok_setup then
vim.notify("Failed to load lazy_setup", vim.log.levels.ERROR)
return
end
-- Polish is optional; don't fail startup if it's missing
pcall(require, "polish")