feat(plugins): integrate snacks.nvim enhancements and update keybindings
This commit is contained in:
1 parent
7effe9d11f
commit
3d606e6e1d
2 files changed
+118
-57
No files matched your search
+89
-18
@@ -129,7 +129,7 @@ return {
|
|||||||
clipboard = "unnamedplus",
|
clipboard = "unnamedplus",
|
||||||
title = true,
|
title = true,
|
||||||
titlestring = "",
|
titlestring = "",
|
||||||
laststatus = 0,
|
laststatus = 3, -- global statusline (custom heirline in heirline.lua)
|
||||||
},
|
},
|
||||||
g = {},
|
g = {},
|
||||||
},
|
},
|
||||||
@@ -141,7 +141,13 @@ return {
|
|||||||
["<C-!>"] = { "<Cmd>suspend<CR>", desc = "Suspend nvim (return with 'fg')" },
|
["<C-!>"] = { "<Cmd>suspend<CR>", desc = "Suspend nvim (return with 'fg')" },
|
||||||
["ZZ"] = { "<Cmd>wqa<CR>", desc = "Save all buffers and quit Neovim" },
|
["ZZ"] = { "<Cmd>wqa<CR>", desc = "Save all buffers and quit Neovim" },
|
||||||
["<A-q>"] = { "<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" },
|
["F"] = { "za", desc = "Toggle fold under cursor" },
|
||||||
-- v6: vim.diagnostic.goto_next/goto_prev deprecated in 0.11, use jump()
|
-- v6: vim.diagnostic.goto_next/goto_prev deprecated in 0.11, use jump()
|
||||||
["J"] = {
|
["J"] = {
|
||||||
@@ -168,12 +174,7 @@ return {
|
|||||||
desc = "Find buffers",
|
desc = "Find buffers",
|
||||||
},
|
},
|
||||||
["<C-b><C-c>"] = {
|
["<C-b><C-c>"] = {
|
||||||
function()
|
function() require("snacks").bufdelete.other() end,
|
||||||
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,
|
|
||||||
desc = "Close all buffers except the current one",
|
desc = "Close all buffers except the current one",
|
||||||
},
|
},
|
||||||
["<C-b>g"] = {
|
["<C-b>g"] = {
|
||||||
@@ -189,14 +190,58 @@ return {
|
|||||||
function() require("snacks").picker.lines() end,
|
function() require("snacks").picker.lines() end,
|
||||||
desc = "Find in line",
|
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-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-Tab>"] = { "<cmd>tabnext<CR>", desc = "Next Tab" },
|
||||||
["<C-g><C-i>"] = { "<cmd>Octo issue list<CR>", desc = "List Issues" },
|
["<C-g><C-i>"] = {
|
||||||
["<C-g><C-l>"] = { "<cmd>Octo label<CR>", desc = "Manage Labels" },
|
function() require("snacks").picker.gh_issue() end,
|
||||||
["<C-g><C-p>"] = { "<cmd>Octo pr list<CR>", desc = "List PRs" },
|
desc = "GitHub issues (open)",
|
||||||
["<C-g>s"] = { "<cmd>Octo search<CR>", desc = "Octo Search" },
|
},
|
||||||
|
["<C-g><C-p>"] = {
|
||||||
|
function() require("snacks").picker.gh_pr() end,
|
||||||
|
desc = "GitHub PRs (open)",
|
||||||
|
},
|
||||||
|
["<C-g>I"] = {
|
||||||
|
function() require("snacks").picker.gh_issue { state = "all" } end,
|
||||||
|
desc = "GitHub issues (all)",
|
||||||
|
},
|
||||||
|
["<C-g>P"] = {
|
||||||
|
function() require("snacks").picker.gh_pr { state = "all" } end,
|
||||||
|
desc = "GitHub PRs (all)",
|
||||||
|
},
|
||||||
|
-- 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 (previously a dashboard action)
|
||||||
|
["<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-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)" },
|
||||||
["<C-g><C-r>"] = { "<cmd>!gh release list<CR>", desc = "List Releases" },
|
["<C-g><C-r>"] = { "<cmd>!gh release list<CR>", desc = "List Releases" },
|
||||||
["<C-g>d"] = {
|
["<C-g>d"] = {
|
||||||
function() require("snacks").picker.git_diff() end,
|
function() require("snacks").picker.git_diff() end,
|
||||||
@@ -402,12 +447,38 @@ return {
|
|||||||
},
|
},
|
||||||
i = {
|
i = {
|
||||||
["<C-s>"] = { "<Cmd>wa<CR><Esc>", desc = "Save buffer, and return to normal mode" },
|
["<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-c>"] = {
|
||||||
["<C-x>"] = { "<Cmd>wa<CR><Cmd>bd<CR><Esc>", desc = "Save, close buffer, and return to normal mode" },
|
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 = {
|
v = {
|
||||||
["<C-c>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
|
["<C-c>"] = {
|
||||||
["<C-x>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
|
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",
|
||||||
|
},
|
||||||
["D"] = {
|
["D"] = {
|
||||||
function()
|
function()
|
||||||
vim.cmd 'normal! "vy'
|
vim.cmd 'normal! "vy'
|
||||||
|
|||||||
+29
-39
@@ -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
|
-- 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
|
-- tab via `tabdrop` (:tab drop semantics — focus the buffer if it's already
|
||||||
@@ -43,53 +44,42 @@ end
|
|||||||
return {
|
return {
|
||||||
{ "sphamba/smear-cursor.nvim", opts = {} },
|
{ "sphamba/smear-cursor.nvim", opts = {} },
|
||||||
|
|
||||||
-- terminals are handled by kitty now
|
-- AstroNvim CORE ships toggleterm (astronvim/plugins/toggleterm.lua);
|
||||||
|
-- terminals are handled by kitty + snacks.terminal/external-tui instead
|
||||||
{ "akinsho/toggleterm.nvim", enabled = false },
|
{ "akinsho/toggleterm.nvim", enabled = false },
|
||||||
|
|
||||||
|
-- pulled in by astrocommunity.pack.typescript; only ever loaded by
|
||||||
|
-- neo-tree/nvim-tree (both removed) and yazi.nvim handles LSP renames
|
||||||
|
{ "antosha417/nvim-lsp-file-operations", enabled = false },
|
||||||
|
|
||||||
{
|
{
|
||||||
"folke/snacks.nvim",
|
"folke/snacks.nvim",
|
||||||
|
---@type snacks.Config
|
||||||
opts = {
|
opts = {
|
||||||
|
-- dashboard discarded in favor of session management: the astrocore
|
||||||
|
-- restore_session autocmd resumes the cwd dirsession on startup and
|
||||||
|
-- sessions.autosave persists it on exit
|
||||||
|
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 },
|
||||||
|
|
||||||
picker = {
|
picker = {
|
||||||
jump = { reuse_win = true },
|
jump = { reuse_win = true },
|
||||||
sources = picker_sources,
|
sources = picker_sources,
|
||||||
},
|
},
|
||||||
dashboard = {
|
|
||||||
enabled = true,
|
styles = {
|
||||||
preset = {
|
-- right-hand 30% split used by :Scooter (external-tui snacks terminal)
|
||||||
-- "prdlk.nvim" in ansi_regular block style
|
scooter = {
|
||||||
header = table.concat({
|
position = "right",
|
||||||
"██████ ██████ ██████ ██ ██ ██ ███ ██ ██ ██ ██ ███ ███",
|
width = 0.3,
|
||||||
"██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ████ ████",
|
height = 0,
|
||||||
"██████ ██████ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ ████ ██",
|
border = "none",
|
||||||
"██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██",
|
|
||||||
"██ ██ ██ ██████ ███████ ██ ██ ██ ██ ████ ████ ██ ██ ██",
|
|
||||||
}, "\n"),
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
{ section = "header" },
|
|
||||||
{ section = "keys", gap = 1, padding = 1 },
|
|
||||||
{
|
|
||||||
icon = " ",
|
|
||||||
desc = "Browse Repo",
|
|
||||||
padding = 1,
|
|
||||||
key = "b",
|
|
||||||
action = function() Snacks.gitbrowse() end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon = " ",
|
|
||||||
desc = "Projects (ghq)",
|
|
||||||
padding = 1,
|
|
||||||
key = "p",
|
|
||||||
action = 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)
|
|
||||||
Snacks.picker.files()
|
|
||||||
end)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{ section = "startup" },
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in new issue
Block a user