nvim: use vim.pack

This commit is contained in:
2025-12-20 10:30:27 +01:00
parent 48392501e1
commit 292de198a6
13 changed files with 475 additions and 428 deletions

View File

@@ -2,59 +2,12 @@ require("config.options")
require("config.remap") require("config.remap")
require("config.lsp") require("config.lsp")
local ok, paq = pcall(require, "paq") require("plugins.arrow")
if ok then require("plugins.auto-session")
paq({ require("plugins.colorscheme")
"EdenEast/nightfox.nvim", require("plugins.conform")
"ellisonleao/gruvbox.nvim", require("plugins.flash")
"rmagatti/auto-session", require("plugins.multicursor")
"stevearc/conform.nvim", require("plugins.oil")
"otavioschwanck/arrow.nvim", require("plugins.snacks")
"folke/flash.nvim", require("plugins.treesitter")
"folke/snacks.nvim",
"stevearc/oil.nvim",
{
"jake-stewart/multicursor.nvim",
branch = "1.0",
},
{
"nvim-treesitter/nvim-treesitter-textobjects",
branch = "master",
},
{
"nvim-treesitter/nvim-treesitter",
branch = "master",
build = ":TSUpdate",
},
})
else
print("plugin paq missing")
end
local function load_plugin(name, setup)
local cfg = require(setup)
name = cfg.main or name
local ok, plugin = pcall(require, name)
if ok then
if cfg.config then
cfg.config(cfg.opts)
else
plugin.setup(cfg.opts)
end
if cfg.init then
cfg.init(plugin)
end
else
print("plugin " .. name .. " missing")
end
end
load_plugin("arrow", "plugins.arrow")
load_plugin("nightfox", "plugins.colorscheme")
load_plugin("conform", "plugins.conform")
load_plugin("flash", "plugins.flash")
load_plugin("multicursor-nvim", "plugins.multicursor")
load_plugin("oil", "plugins.oil")
load_plugin("snacks", "plugins.snacks")
load_plugin("treesitter", "plugins.treesitter")
load_plugin("auto-session", "plugins.auto-session")

View File

@@ -6,11 +6,7 @@ set("n", "<M-j>", "<C-w>j")
set("n", "<M-l>", "<C-w>l") set("n", "<M-l>", "<C-w>l")
set("n", "<Esc>", "<cmd>nohlsearch<cr>") set("n", "<Esc>", "<cmd>nohlsearch<cr>")
set("n", "<leader>k", "<cmd>cp<cr>") set("n", "<leader>K", "<cmd>cp<cr>")
set("n", "<leader>j", "<cmd>cn<cr>") set("n", "<leader>J", "<cmd>cn<cr>")
set("n", "<leader>x", "<cmd>copen<cr>") set("n", "<leader>x", "<cmd>copen<cr>")
set("n", "<leader>X", "<cmd>cclose<cr>") set("n", "<leader>X", "<cmd>cclose<cr>")
set("n", "<leader>a", "<cmd>AutoSession search<cr>")
require("config.remap.snacks")

View File

@@ -1,204 +0,0 @@
local set = vim.keymap.set
set("n", "<leader><space>", function()
Snacks.picker.smart()
end, { desc = "Smart Find Files" })
set("n", "<leader>b", function()
Snacks.picker.buffers()
end, { desc = "Buffers" })
set("n", "<leader>e", function()
Snacks.explorer()
end, { desc = "File Explorer" })
set("n", "<leader>r", function()
Snacks.picker.recent()
end, { desc = "Recent files" })
set("n", "<leader>R", function()
Snacks.picker.resume()
end, { desc = "Resume" })
set("n", "<leader>p", function()
Snacks.picker.projects()
end, { desc = "Projects" })
set("n", "<leader>l", function()
Snacks.picker.lines()
end, { desc = "Buffer lines" })
set("n", "<leader>L", function()
Snacks.picker.grep_buffers()
end, { desc = "Grep Open Buffers" })
set("n", "<leader>F", function()
Snacks.picker.files()
end, { desc = "Find Files" })
set("n", "<leader>S", function()
Snacks.picker.grep()
end, { desc = "Grep" })
set("n", "<leader>B", function()
Snacks.picker.git_branches()
end, { desc = "Git Branches" })
set({ "n", "v" }, "<leader>xB", function()
Snacks.gitbrowse()
end, { desc = "Git Browse" })
set("n", "<leader>i", function()
Snacks.picker.git_log_line()
end, { desc = "Git Log Line" })
set("n", "<leader>I", function()
Snacks.picker.git_log()
end, { desc = "Git Log" })
set("n", "<leader>t", function()
Snacks.picker.git_status()
end, { desc = "Git Status" })
set("n", "<leader>H", function()
Snacks.picker.git_diff()
end, { desc = "Git Diff (Hunks)" })
set("n", "<leader>xS", function()
Snacks.picker.git_stash()
end, { desc = "Git Stash" })
set("n", "<leader>f", function()
Snacks.picker.git_files()
end, { desc = "Find Git Files" })
set("n", "<leader>s", function()
Snacks.picker.git_grep()
end, { desc = "Git Grep" })
set({ "n", "v" }, "<leader>o", function()
Snacks.picker.grep_word()
end, { desc = "Grep Visual Selection or Word" })
set("n", "<leader>g", function()
Snacks.lazygit()
end, { desc = "Lazygit" })
set("n", "<leader>G", function()
Snacks.lazygit.log_file()
end, { desc = "Git Log File" })
set("n", "<leader>m", function()
Snacks.picker.marks()
end, { desc = "Marks" })
set("n", "<leader>M", function()
Snacks.picker.man()
end, { desc = "Man pages" })
set("n", "<leader>U", function()
Snacks.picker.undo()
end, { desc = "Undo History" })
set("n", "<leader>q", function()
Snacks.picker.qflist()
end, { desc = "Quickfix list" })
set("n", "<leader>Q", function()
Snacks.picker.loclist()
end, { desc = "Location List" })
set("n", "<leader>xs", function()
Snacks.picker.colorschemes()
end, { desc = "Colorschemes" })
set("n", "<leader>n", function()
Snacks.notifier.show_history()
end, { desc = "Notification History" })
set("n", "<leader>N", function()
Snacks.picker.notifications()
end, { desc = "Notifications" })
set("n", "<leader>xC", function()
Snacks.picker.commands()
end, { desc = "Commands" })
set("n", "<leader>h", function()
Snacks.picker.keymaps()
end, { desc = "Keymaps" })
set("n", "<leader>xh", function()
Snacks.picker.highlights()
end, { desc = "Hightlights" })
set("n", "<leader>xc", function()
Snacks.picker.command_history()
end, { desc = "Command History" })
set("n", '<leader>"', function()
Snacks.picker.registers()
end, { desc = "Registers" })
set("n", "<leader>$", function()
Snacks.rename.rename_file()
end, { desc = "Rename File" })
set("n", "<leader>z", function()
Snacks.zen.zoom()
end, { desc = "Toggle Zoom" })
set("n", "<leader>.", function()
Snacks.scratch()
end, { desc = "Toggle Scratch Buffer" })
set("n", "<leader>x.", function()
Snacks.scratch.select()
end, { desc = "Select Scratch Buffer" })
-- LSP
set("n", "gd", function()
Snacks.picker.lsp_definitions()
end, { desc = "Goto Definition" })
set("n", "gD", function()
Snacks.picker.lsp_declarations()
end, { desc = "Goto Declaration" })
set("n", "grr", function()
Snacks.picker.lsp_references()
end, { desc = "References" })
set("n", "gI", function()
Snacks.picker.lsp_implementations()
end, { desc = "Goto Implementation" })
set("n", "gy", function()
Snacks.picker.lsp_type_definitions()
end, { desc = "Goto T[y]pe Definition" })
set("n", "<leader>w", function()
Snacks.picker.lsp_symbols()
end, { desc = "LSP Symbols" })
set("n", "<leader>d", function()
Snacks.picker.diagnostics_buffer()
end, { desc = "Buffer Diagnostics" })
set("n", "<leader>D", function()
Snacks.picker.diagnostics()
end, { desc = "Diagnostics" })
set("n", "<leader>W", function()
Snacks.picker.lsp_workspace_symbols()
end, { desc = "LSP Workspace Symbols" })
-- Terminal
set({ "n", "t" }, "<c-/>", function()
Snacks.terminal()
end, { desc = "Toggle Terminal" })
set({ "n", "t" }, "<c-_>", function()
Snacks.terminal()
end, { desc = "which_key_ignore" })

View File

@@ -1,7 +1,12 @@
return { vim.pack.add({ "https://github.com/otavioschwanck/arrow.nvim" })
opts = {
local ok, arrow = pcall(require, "arrow")
if ok then
arrow.setup({
show_icons = false, show_icons = false,
leader_key = "_", leader_key = "_",
buffer_leader_key = " m", buffer_leader_key = " m",
}, })
} else
print("plugin arrow missing")
end

View File

@@ -1,5 +1,12 @@
return { vim.pack.add({ "https://github.com/rmagatti/auto-session" })
opts = {
vim.keymap.set("n", "<leader>a", "<cmd>AutoSession search<cr>")
local ok, sess = pcall(require, "auto-session")
if ok then
sess.setup({
suppressed_dirs = { "~/", "~/src", "~/Downloads", "/" }, suppressed_dirs = { "~/", "~/src", "~/Downloads", "/" },
}, })
} else
print("plugin auto-session missing")
end

View File

@@ -1,16 +1,5 @@
return { vim.pack.add({ "https://github.com/ellisonleao/gruvbox.nvim" })
opts = {
specs = {
all = {
syntax = {
operator = "#bf8040",
},
},
},
},
init = function()
local cs = require("config.colorscheme") local cs = require("config.colorscheme")
cs.set_colorschemes("gruvbox", "gruvbox") cs.set_colorschemes("gruvbox", "gruvbox")
cs.update_colorscheme() cs.update_colorscheme()
end,
}

View File

@@ -1,5 +1,8 @@
return { vim.pack.add({ "https://github.com/stevearc/conform.nvim" })
opts = {
local ok, conform = pcall(require, "conform")
if ok then
conform.setup({
formatters_by_ft = { formatters_by_ft = {
lua = { "stylua" }, lua = { "stylua" },
}, },
@@ -7,5 +10,7 @@ return {
timeout_ms = 500, timeout_ms = 500,
lsp_format = "fallback", lsp_format = "fallback",
}, },
}, })
} else
print("plugin conform missing")
end

View File

@@ -1,13 +1,18 @@
return { vim.pack.add({ "https://github.com/folke/flash.nvim" })
opts = {
local ok, flash = pcall(require, "flash")
if ok then
flash.setup({
modes = { modes = {
char = { char = {
enabled = false, enabled = false,
}, },
}, },
}, })
init = function()
local set = vim.keymap.set local set = vim.keymap.set
set({ "n", "x", "o" }, "\\", function() set({ "n", "x", "o" }, "\\", function()
require("flash").jump() require("flash").jump()
end, { desc = "Flash" }) end, { desc = "Flash" })
@@ -20,5 +25,6 @@ return {
set({ "n", "x", "o" }, " t", function() set({ "n", "x", "o" }, " t", function()
require("flash").treesitter_search() require("flash").treesitter_search()
end, { desc = "Treesitter Search" }) end, { desc = "Treesitter Search" })
end, else
} print("plugin flash missing")
end

View File

@@ -1,5 +1,9 @@
return { vim.pack.add({ { src = "https://github.com/jake-stewart/multicursor.nvim", version = "1.0" } })
init = function(mc)
local ok, mc = pcall(require, "multicursor-nvim")
if ok then
mc.setup()
local set = vim.keymap.set local set = vim.keymap.set
-- Add or skip cursor above/below the main cursor. -- Add or skip cursor above/below the main cursor.
@@ -67,5 +71,6 @@ return {
hl(0, "MultiCursorDisabledCursor", { reverse = true }) hl(0, "MultiCursorDisabledCursor", { reverse = true })
hl(0, "MultiCursorDisabledVisual", { link = "Visual" }) hl(0, "MultiCursorDisabledVisual", { link = "Visual" })
hl(0, "MultiCursorDisabledSign", { link = "SignColumn" }) hl(0, "MultiCursorDisabledSign", { link = "SignColumn" })
end, else
} print("plugin multicursor-nvim missing")
end

View File

@@ -1,5 +1,10 @@
return { vim.pack.add({ "https://github.com/stevearc/oil.nvim" })
init = function()
local ok, oil = pcall(require, "oil")
if ok then
oil.setup()
else
print("plugin oil missing")
end
vim.keymap.set("n", "<leader>-", "<cmd>Oil<cr>", { desc = "Oil file manager" }) vim.keymap.set("n", "<leader>-", "<cmd>Oil<cr>", { desc = "Oil file manager" })
end,
}

View File

@@ -1,5 +1,220 @@
return { vim.pack.add({ "https://github.com/folke/snacks.nvim" })
init = function()
local ok, snacks = pcall(require, "snacks")
if ok then
snacks.setup({
picker = { enabled = true },
})
else
print("plugin snacks missing")
end
local set = vim.keymap.set
set("n", "<leader><space>", function()
Snacks.picker.smart()
end, { desc = "Smart Find Files" })
set("n", "<leader>b", function()
Snacks.picker.buffers()
end, { desc = "Buffers" })
set("n", "<leader>e", function()
Snacks.explorer()
end, { desc = "File Explorer" })
set("n", "<leader>r", function()
Snacks.picker.recent()
end, { desc = "Recent files" })
set("n", "<leader>R", function()
Snacks.picker.resume()
end, { desc = "Resume" })
set("n", "<leader>p", function()
Snacks.picker.projects()
end, { desc = "Projects" })
set("n", "<leader>l", function()
Snacks.picker.lines()
end, { desc = "Buffer lines" })
set("n", "<leader>L", function()
Snacks.picker.grep_buffers()
end, { desc = "Grep Open Buffers" })
set("n", "<leader>F", function()
Snacks.picker.files()
end, { desc = "Find Files" })
set("n", "<leader>S", function()
Snacks.picker.grep()
end, { desc = "Grep" })
set("n", "<leader>B", function()
Snacks.picker.git_branches()
end, { desc = "Git Branches" })
set({ "n", "v" }, "<leader>xB", function()
Snacks.gitbrowse()
end, { desc = "Git Browse" })
set("n", "<leader>i", function()
Snacks.picker.git_log_line()
end, { desc = "Git Log Line" })
set("n", "<leader>I", function()
Snacks.picker.git_log()
end, { desc = "Git Log" })
set("n", "<leader>t", function()
Snacks.picker.git_status()
end, { desc = "Git Status" })
set("n", "<leader>H", function()
Snacks.picker.git_diff()
end, { desc = "Git Diff (Hunks)" })
set("n", "<leader>xS", function()
Snacks.picker.git_stash()
end, { desc = "Git Stash" })
set("n", "<leader>f", function()
Snacks.picker.git_files()
end, { desc = "Find Git Files" })
set("n", "<leader>s", function()
Snacks.picker.git_grep()
end, { desc = "Git Grep" })
set({ "n", "v" }, "<leader>o", function()
Snacks.picker.grep_word()
end, { desc = "Grep Visual Selection or Word" })
set("n", "<leader>g", function()
Snacks.lazygit()
end, { desc = "Lazygit" })
set("n", "<leader>G", function()
Snacks.lazygit.log_file()
end, { desc = "Git Log File" })
set("n", "<leader>m", function()
Snacks.picker.marks()
end, { desc = "Marks" })
set("n", "<leader>M", function()
Snacks.picker.man()
end, { desc = "Man pages" })
set("n", "<leader>U", function()
Snacks.picker.undo()
end, { desc = "Undo History" })
set("n", "<leader>q", function()
Snacks.picker.qflist()
end, { desc = "Quickfix list" })
set("n", "<leader>Q", function()
Snacks.picker.loclist()
end, { desc = "Location List" })
set("n", "<leader>xs", function()
Snacks.picker.colorschemes()
end, { desc = "Colorschemes" })
set("n", "<leader>n", function()
Snacks.notifier.show_history()
end, { desc = "Notification History" })
set("n", "<leader>N", function()
Snacks.picker.notifications()
end, { desc = "Notifications" })
set("n", "<leader>xC", function()
Snacks.picker.commands()
end, { desc = "Commands" })
set("n", "<leader>h", function()
Snacks.picker.keymaps()
end, { desc = "Keymaps" })
set("n", "<leader>xh", function()
Snacks.picker.highlights()
end, { desc = "Hightlights" })
set("n", "<leader>xc", function()
Snacks.picker.command_history()
end, { desc = "Command History" })
set("n", '<leader>"', function()
Snacks.picker.registers()
end, { desc = "Registers" })
set("n", "<leader>$", function()
Snacks.rename.rename_file()
end, { desc = "Rename File" })
set("n", "<leader>z", function()
Snacks.zen.zoom()
end, { desc = "Toggle Zoom" })
set("n", "<leader>.", function()
Snacks.scratch()
end, { desc = "Toggle Scratch Buffer" })
set("n", "<leader>x.", function()
Snacks.scratch.select()
end, { desc = "Select Scratch Buffer" })
-- LSP
set("n", "gd", function()
Snacks.picker.lsp_definitions()
end, { desc = "Goto Definition" })
set("n", "gD", function()
Snacks.picker.lsp_declarations()
end, { desc = "Goto Declaration" })
set("n", "grr", function()
Snacks.picker.lsp_references()
end, { desc = "References" })
set("n", "gI", function()
Snacks.picker.lsp_implementations()
end, { desc = "Goto Implementation" })
set("n", "gy", function()
Snacks.picker.lsp_type_definitions()
end, { desc = "Goto T[y]pe Definition" })
set("n", "<leader>w", function()
Snacks.picker.lsp_symbols()
end, { desc = "LSP Symbols" })
set("n", "<leader>d", function()
Snacks.picker.diagnostics_buffer()
end, { desc = "Buffer Diagnostics" })
set("n", "<leader>D", function()
Snacks.picker.diagnostics()
end, { desc = "Diagnostics" })
set("n", "<leader>W", function()
Snacks.picker.lsp_workspace_symbols()
end, { desc = "LSP Workspace Symbols" })
-- Terminal
set({ "n", "t" }, "<c-/>", function()
Snacks.terminal()
end, { desc = "Toggle Terminal" })
set({ "n", "t" }, "<c-_>", function()
Snacks.terminal()
end, { desc = "which_key_ignore" })
vim.api.nvim_create_autocmd("VimEnter", { vim.api.nvim_create_autocmd("VimEnter", {
callback = function() callback = function()
-- Setup some globals for debugging (lazy-loaded) -- Setup some globals for debugging (lazy-loaded)
@@ -29,13 +244,9 @@ return {
.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }) .option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 })
:map("<leader>uc") :map("<leader>uc")
Snacks.toggle.treesitter():map("<leader>uT") Snacks.toggle.treesitter():map("<leader>uT")
Snacks.toggle Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map("<leader>ub")
.option("background", { off = "light", on = "dark", name = "Dark Background" })
:map("<leader>ub")
Snacks.toggle.inlay_hints():map("<leader>uh") Snacks.toggle.inlay_hints():map("<leader>uh")
Snacks.toggle.indent():map("<leader>ug") Snacks.toggle.indent():map("<leader>ug")
Snacks.toggle.dim():map("<leader>uD") Snacks.toggle.dim():map("<leader>uD")
end, end,
}) })
end,
}

View File

@@ -1,6 +1,26 @@
return { -- run ":TSUpdate" after plugin update
main = "nvim-treesitter.configs", -- If hooks need to run on install, run this before `vim.pack.add()`
opts = { vim.api.nvim_create_autocmd("PackChanged", {
group = vim.api.nvim_create_augroup("nvim-treesitter-update", { clear = true }),
callback = function(ev)
local name, kind = ev.data.spec.name, ev.data.kind
if name == "nvim-treesitter" and kind == "update" then
if not ev.data.active then
vim.cmd.packadd("nvim-treesitter")
end
vim.cmd("TSUpdate")
print("TSUpdate done.")
end
end,
})
vim.pack.add({
{ src = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects", version = "master" },
{ src = "https://github.com/nvim-treesitter/nvim-treesitter", version = "master" },
})
local ok, configs = pcall(require, "nvim-treesitter.configs")
if ok then
configs.setup({
highlight = { highlight = {
enable = true, enable = true,
}, },
@@ -58,5 +78,7 @@ return {
}, },
}, },
}, },
}, })
} else
print("plugin nvim-treesitter.configs missing")
end

View File

@@ -0,0 +1,47 @@
{
"plugins": {
"arrow.nvim": {
"rev": "6e0f726f55f99332dd726a53effd6813786b6d49",
"src": "https://github.com/otavioschwanck/arrow.nvim"
},
"auto-session": {
"rev": "292492ab7af4bd8b9e37e28508bc8ce995722fd5",
"src": "https://github.com/rmagatti/auto-session"
},
"conform.nvim": {
"rev": "328c2f1dda56f933d3337a1316e1020ba30ba6aa",
"src": "https://github.com/stevearc/conform.nvim"
},
"flash.nvim": {
"rev": "fcea7ff883235d9024dc41e638f164a450c14ca2",
"src": "https://github.com/folke/flash.nvim"
},
"gruvbox.nvim": {
"rev": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437",
"src": "https://github.com/ellisonleao/gruvbox.nvim"
},
"multicursor.nvim": {
"rev": "a0ea3303a6c4b233cf3272fb1e358d4c842e5260",
"src": "https://github.com/jake-stewart/multicursor.nvim",
"version": "'1.0'"
},
"nvim-treesitter": {
"rev": "42fc28ba918343ebfd5565147a42a26580579482",
"src": "https://github.com/nvim-treesitter/nvim-treesitter",
"version": "'master'"
},
"nvim-treesitter-textobjects": {
"rev": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef",
"src": "https://github.com/nvim-treesitter/nvim-treesitter-textobjects",
"version": "'master'"
},
"oil.nvim": {
"rev": "cbcb3f997f6f261c577b943ec94e4ef55108dd95",
"src": "https://github.com/stevearc/oil.nvim"
},
"snacks.nvim": {
"rev": "fe7cfe9800a182274d0f868a74b7263b8c0c020b",
"src": "https://github.com/folke/snacks.nvim"
}
}
}