feat(plugins): integrate snacks.nvim keymaps and extend plugin config with GitHub, LSP highlights, and UI styles

This commit is contained in:
Prad Nukala committed 2026-08-20 15:26:43 -04:00
1 parent 0fb67acc3d
commit f183c770f3
2 files changed
+109 -19

No files matched your search

+89 -18
View File
@@ -184,7 +184,7 @@ return {
clipboard = "unnamedplus",
title = true,
titlestring = "",
laststatus = 0,
laststatus = 3, -- global statusline (custom heirline in heirline.lua)
},
g = {},
},
@@ -196,7 +196,13 @@ return {
["<C-!>"] = { "<Cmd>suspend<CR>", desc = "Suspend nvim (return with 'fg')" },
["ZZ"] = { "<Cmd>wqa<CR>", desc = "Save all buffers and quit Neovim" },
["<A-q>"] = { "<Cmd>wqa<CR>", desc = "Save all buffers and quit Neovim" },
["<C-c>"] = { "<Cmd>wa<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
["<C-c>"] = {
function()
vim.cmd "wa"
require("snacks").bufdelete()
end,
desc = "Save and close buffer",
},
["F"] = { "za", desc = "Toggle fold under cursor" },
-- v6: vim.diagnostic.goto_next/goto_prev deprecated in 0.11, use jump()
["J"] = {
@@ -233,12 +239,7 @@ return {
desc = "Find buffers",
},
["<C-b><C-c>"] = {
function()
local current_buffer = vim.api.nvim_get_current_buf()
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
if buf ~= current_buffer then vim.api.nvim_buf_delete(buf, { force = true }) end
end
end,
function() require("snacks").bufdelete.other() end,
desc = "Close all buffers except the current one",
},
["<C-b>g"] = {
@@ -254,14 +255,58 @@ return {
function() require("snacks").picker.lines() end,
desc = "Find in line",
},
["<C-g>o"] = { "<cmd>!gh repo view --web<CR>", desc = "Open Repo on Web" },
["<C-g>o"] = { function() require("snacks").gitbrowse() end, desc = "Open Repo on Web" },
["<C-s>"] = { "<cmd>w<CR>", desc = "Save buffer" },
["<C-w>"] = { "<cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
["<C-w>"] = {
function()
vim.cmd "w"
require("snacks").bufdelete()
end,
desc = "Save and close buffer",
},
["<C-Tab>"] = { "<cmd>tabnext<CR>", desc = "Next Tab" },
["<C-g><C-i>"] = { "<cmd>Octo issue list<CR>", desc = "List Issues" },
["<C-g><C-l>"] = { "<cmd>Octo label<CR>", desc = "Manage Labels" },
["<C-g><C-p>"] = { "<cmd>Octo pr list<CR>", desc = "List PRs" },
["<C-g>s"] = { "<cmd>Octo search<CR>", desc = "Octo Search" },
["<C-g><C-i>"] = {
function() require("snacks").picker.gh_issue() end,
desc = "GitHub issues (open)",
},
["<C-g>I"] = {
function() require("snacks").picker.gh_issue { state = "all" } end,
desc = "GitHub issues (all)",
},
["<C-g><C-p>"] = {
function() require("snacks").picker.gh_pr() end,
desc = "GitHub PRs (open)",
},
["<C-g>P"] = {
function() require("snacks").picker.gh_pr { state = "all" } end,
desc = "GitHub PRs (all)",
},
["<C-g><C-g>"] = {
function() require("snacks").lazygit() end,
desc = "Toggle lazygit (float)",
},
["<C-d><C-d>"] = {
function() require("snacks").terminal.toggle("lazydocker", { win = { style = "float" } }) end,
desc = "Toggle lazydocker (float)",
},
["<C-r>"] = { "<Cmd>Scooter<CR>", desc = "Find & replace (scooter)" },
-- which-key prefix group labels
["<C-g>"] = { desc = "Git + GitHub" },
["<C-f>"] = { desc = "Find" },
["<C-b>"] = { desc = "Buffers" },
["<C-a>"] = { desc = "Assist" },
-- ghq project switcher
["<C-f>P"] = {
function()
local repos = vim.fn.systemlist "ghq list -p"
vim.ui.select(repos, { prompt = "Select repository" }, function(dir)
if not dir then return end
vim.cmd.cd(dir)
require("snacks").picker.files()
end)
end,
desc = "Find ghq projects",
},
["<C-g><C-r>"] = { "<cmd>!gh release list<CR>", desc = "List Releases" },
["<C-g>d"] = {
function() require("snacks").picker.git_diff() end,
@@ -487,12 +532,38 @@ return {
},
i = {
["<C-s>"] = { "<Cmd>wa<CR><Esc>", desc = "Save buffer, and return to normal mode" },
["<C-c>"] = { "<Cmd>wa<CR><Cmd>bd<CR><Esc>", desc = "Save, close buffer, and return to normal mode" },
["<C-x>"] = { "<Cmd>wa<CR><Cmd>bd<CR><Esc>", desc = "Save, close buffer, and return to normal mode" },
["<C-c>"] = {
function()
vim.cmd "stopinsert"
vim.cmd "wa"
require("snacks").bufdelete()
end,
desc = "Save, close buffer, and return to normal mode",
},
["<C-x>"] = {
function()
vim.cmd "stopinsert"
vim.cmd "wa"
require("snacks").bufdelete()
end,
desc = "Save, close buffer, and return to normal mode",
},
},
v = {
["<C-c>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
["<C-x>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
["<C-c>"] = {
function()
vim.cmd "w"
require("snacks").bufdelete()
end,
desc = "Save and close buffer",
},
["<C-x>"] = {
function()
vim.cmd "w"
require("snacks").bufdelete()
end,
desc = "Save and close buffer",
},
["<C-f><C-w>"] = {
function() require("fff").live_grep_under_cursor() end,
desc = "Grep selection",
+20 -1
View File
@@ -1,4 +1,5 @@
--- User plugins: cursor animation and snacks.nvim (picker + dashboard) customization
--- User plugins: cursor animation and the central snacks.nvim configuration
--- (all snacks modules are configured here in one snacks.Config table)
-- Confirm action for file-opening pickers: <CR> opens the selection as a
-- tab via `tabdrop` (:tab drop semantics — focus the buffer if it's already
@@ -48,6 +49,7 @@ return {
{
"folke/snacks.nvim",
---@type snacks.Config
opts = {
picker = {
jump = { reuse_win = true },
@@ -56,6 +58,23 @@ return {
-- no dashboard: startup either restores the worktree/branch session or
-- opens the git files picker (see config.session)
dashboard = { enabled = false },
-- GitHub issue/PR pickers and buffers (`<C-g>` binds in astrocore.lua)
gh = {},
-- auto-highlight LSP references of the symbol under the cursor;
-- ]] / [[ jump binds live in polish.lua (Snacks.keymap, LSP-gated)
words = { enabled = true },
styles = {
-- right-hand 30% split used by :Scooter (external-tui snacks terminal)
scooter = {
position = "right",
width = 0.3,
height = 0,
border = "none",
},
},
},
},