Files
neovim-config/lua/plugins.lua
T
2026-04-17 04:46:48 -04:00

136 lines
4.4 KiB
Lua

--[[
┌────────────────────────────────────────────────────────────────┐
│ Plugins │
└────────────────────────────────────────────────────────────────┘
--]]
-- Catppuccin.nvim
-- Eagerly load the colorscheme plugin.
vim.pack.add { { src = "https://github.com/catppuccin/nvim", name = "catppuccin" } }
-- Catppuccin Config
Config.plugins.catppuccin = {
flavour = "mocha",
}
vim.cmd.colorscheme "catppuccin"
-- Snacks.nvim
-- Eagerly load snacks for dashboard and performance features.
vim.pack.add { { src = "https://github.com/folke/snacks.nvim", name = "snacks" } }
-- Snacks Config
-- Store opts in the registry first.
Config.plugins.snacks = {
bigfile = { enabled = true },
dashboard = {
enabled = true,
sections = {
{ section = "header" },
{ section = "keys", gap = 1, padding = 1 },
},
},
explorer = { enabled = true },
indent = { enabled = true },
input = { enabled = true },
picker = { enabled = true },
notifier = { enabled = true },
quickfile = { enabled = true },
scope = { enabled = true },
scroll = { enabled = true },
statuscolumn = { enabled = true },
words = { enabled = true },
}
-- Setup Snacks with the registered opts.
require("snacks").setup(Config.plugins.snacks)
-- Persistence.nvim
-- Simple session management.
vim.pack.add { { src = "https://github.com/folke/persistence.nvim", name = "persistence" } }
-- Persistence Config
Config.plugins.persistence = {
dir = vim.fn.stdpath("state") .. "/sessions/",
need = 1,
branch = true,
}
require("persistence").setup(Config.plugins.persistence)
-- Lazy-loaded Plugins
local lazyload = require("lazyload")
lazyload.on_vim_enter(function()
-- Gitsigns.nvim
vim.pack.add { { src = "https://github.com/lewis6991/gitsigns.nvim", name = "gitsigns" } }
require("gitsigns").setup({
numhl = true, -- Enable line number highlighting
})
-- Grug-far.nvim
vim.pack.add { { src = "https://github.com/MagicDuck/grug-far.nvim", name = "grug-far" } }
require("grug-far").setup()
-- Flash.nvim
vim.pack.add { { src = "https://github.com/folke/flash.nvim", name = "flash" } }
require("flash").setup()
-- Which-key.nvim
vim.pack.add { { src = "https://github.com/folke/which-key.nvim", name = "which-key" } }
require("which-key").setup()
-- Mini.ai
vim.pack.add { { src = "https://github.com/echasnovski/mini.ai", name = "mini.ai" } }
Config.plugins.mini_ai = {
custom_textobjects = {
g = function()
local n_lines = vim.api.nvim_buf_line_count(0)
return {
from = { line = 1, col = 1 },
to = { line = n_lines, col = math.max(vim.fn.getline(n_lines):len(), 1) },
}
end,
},
}
require("mini.ai").setup(Config.plugins.mini_ai)
-- Icons
vim.pack.add { { src = "https://github.com/nvim-tree/nvim-web-devicons", name = "nvim-web-devicons" } }
-- Lualine
vim.pack.add { { src = "https://github.com/nvim-lualine/lualine.nvim", name = "lualine" } }
require("lualine").setup({
options = {
theme = "auto",
globalstatus = true,
},
sections = {
lualine_b = { "branch", "diff", "diagnostics" },
}
})
-- Noice dependencies
vim.pack.add { { src = "https://github.com/MunifTanjim/nui.nvim", name = "nui" } }
-- Noice.nvim
vim.pack.add { { src = "https://github.com/folke/noice.nvim", name = "noice" } }
require("noice").setup({
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.set_autocmds"] = true,
["vim.ui.codelens.display_inline"] = true,
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help
},
})
end)