Replaces AstroNvim v5 with from-scratch Neovim 0.12 config using vim.lsp.config()/vim.lsp.enable() natively, lazy.nvim, blink.cmp, and smart-splits tmux integration. tmux: new C-Space prefix, hjkl pane nav, resize key table, tpm plugins. kitty: add allow_remote_control for smart-splits.
55 lines
1.5 KiB
Lua
55 lines
1.5 KiB
Lua
-- Bootstrap lazy.nvim
|
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
|
if not vim.loop.fs_stat(lazypath) then
|
|
vim.fn.system({
|
|
"git", "clone", "--filter=blob:none",
|
|
"https://github.com/folke/lazy.nvim.git",
|
|
"--branch=stable", lazypath,
|
|
})
|
|
end
|
|
vim.opt.rtp:prepend(lazypath)
|
|
|
|
-- Leader must be set before lazy loads plugins
|
|
vim.g.mapleader = " "
|
|
vim.g.maplocalleader = " "
|
|
|
|
-- Load core config (order matters)
|
|
require("options")
|
|
require("autocmds")
|
|
|
|
-- Load LSP server configurations (vim.lsp.config calls)
|
|
-- These must run before vim.lsp.enable() in plugins/lsp.lua
|
|
do
|
|
local lsp_dir = vim.fn.stdpath("config") .. "/lua/lsp"
|
|
for _, name in ipairs(vim.fn.readdir(lsp_dir)) do
|
|
if name:match("%.lua$") then
|
|
require("lsp." .. name:gsub("%.lua$", ""))
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Load colorscheme before plugins (prevents flash of wrong colors)
|
|
-- colors/apex-neon.lua is managed by refresh-apex-themes, not via lazy
|
|
vim.cmd.colorscheme("apex-neon")
|
|
|
|
-- Setup lazy.nvim
|
|
require("lazy").setup({
|
|
spec = { { import = "plugins" } },
|
|
lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json",
|
|
defaults = { lazy = false },
|
|
install = { colorscheme = { "apex-neon", "habamax" } },
|
|
checker = { enabled = false },
|
|
change_detection = { enabled = false },
|
|
performance = {
|
|
rtp = {
|
|
disabled_plugins = {
|
|
"gzip", "matchit", "matchparen", "netrwPlugin",
|
|
"tarPlugin", "tohtml", "tutor", "zipPlugin",
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
-- Keymaps loaded after lazy so plugin keymaps can be set in their own files
|
|
require("keymaps")
|