refactor(flake): tidy up inputs attrset

This commit is contained in:
iofq 2025-03-15 01:34:46 -05:00
parent 7e87ede672
commit 4dfe6c4c33
9 changed files with 263 additions and 295 deletions

54
flake.lock generated
View file

@ -96,11 +96,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1738453229, "lastModified": 1741352980,
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -183,11 +183,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1741379162, "lastModified": 1742649964,
"narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=", "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc", "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -249,11 +249,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1739595404, "lastModified": 1742014779,
"narHash": "sha256-0CjCfbq0yHWexOrpO06e2WU1r5JAqR6ffy1zgM3NksI=", "narHash": "sha256-I6fG1zrfdLFcp/imGZElig0BJO3YU0QEXLgvwWoOpJ8=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "hercules-ci-effects", "repo": "hercules-ci-effects",
"rev": "06519cec8fb32d219006da6eacd255504a9996af", "rev": "524637ef84c177661690b924bf64a1ce18072a2c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -289,11 +289,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1741738202, "lastModified": 1743293377,
"narHash": "sha256-S98JgCHJJFBI9XFXPdn/ATjux6JfrjLN7jGHEGvxsYM=", "narHash": "sha256-DqvBHtTslU0E+XMW6xM4SY3UD3+nHAAIXHag0zukrpc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "neovim-nightly-overlay", "repo": "neovim-nightly-overlay",
"rev": "6e291160fc740378dc846f9bb402653c4e50a313", "rev": "3f10166b5b818227b9d7728f97e67e11cdf27ffd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -305,11 +305,11 @@
"neovim-src": { "neovim-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1741737177, "lastModified": 1743289921,
"narHash": "sha256-MxPM5FawrHrUywZXAHJ4+0+Wj4dITHDMHKf4aIwC9zk=", "narHash": "sha256-0gsBH+wMZJaXb95GKP6OZmtyhlJh0lS/gsn6J8rxt6k=",
"owner": "neovim", "owner": "neovim",
"repo": "neovim", "repo": "neovim",
"rev": "092529ebbf6fe566399aa47c274d708b8dea5334", "rev": "99529577cc9f5229cbb3dac8ab4782bd43094102",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -320,11 +320,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1741678040, "lastModified": 1743076231,
"narHash": "sha256-rmBsz7BBcDwfvDkxnKHmolKceGJrr0nyz5PQYZg0kMk=", "narHash": "sha256-yQugdVfi316qUfqzN8JMaA2vixl+45GxNm4oUfXlbgw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3ee8818da146871cd570b164fc4f438f78479a50", "rev": "6c5963357f3c1c840201eda129a99d455074db04",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -348,11 +348,11 @@
}, },
"nixpkgs-master": { "nixpkgs-master": {
"locked": { "locked": {
"lastModified": 1741842650, "lastModified": 1743392618,
"narHash": "sha256-gyA3ngXZroBeWdrVsM+bL63hQMUheYCrC+V78TEgBeU=", "narHash": "sha256-lc4l0nV5WgnS4wuZrX7Na2tRBEpe2IzWmLnhm3+t3Tk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b1f2198021490b51fb92b8b09db97b9ba2a7b4ce", "rev": "cd6f6791e94d08b983fe6d127ec6942176737f6a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -380,11 +380,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1741513245, "lastModified": 1743315132,
"narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", "narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", "rev": "52faf482a3889b7619003c0daec593a1912fddc1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -426,11 +426,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1739829690, "lastModified": 1743081648,
"narHash": "sha256-mL1szCeIsjh6Khn3nH2cYtwO5YXG6gBiTw1A30iGeDU=", "narHash": "sha256-WRAylyYptt6OX5eCEBWyTwOEqEtD6zt33rlUkr6u3cE=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "3d0579f5cc93436052d94b73925b48973a104204", "rev": "29a3d7b768c70addce17af0869f6e2bd8f5be4b7",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -10,13 +10,17 @@
url = "github:mrcjkb/nix-gen-luarc-json"; url = "github:mrcjkb/nix-gen-luarc-json";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# Add bleeding-edge plugins here.
# They can be updated with `nix flake update` (make sure to commit the generated flake.lock)
# wf-nvim = {
# url = "github:Cassin01/wf.nvim";
# flake = false;
# };
}; };
outputs = inputs @ { outputs = inputs @ {
self, self,
nixpkgs, nixpkgs,
flake-utils, flake-utils,
gen-luarc,
... ...
}: let }: let
systems = builtins.attrNames nixpkgs.legacyPackages; systems = builtins.attrNames nixpkgs.legacyPackages;
@ -27,10 +31,14 @@
flake-utils.lib.eachSystem systems (system: let flake-utils.lib.eachSystem systems (system: let
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit system; inherit system;
config.allowUnfree = true;
overlays = [ overlays = [
inputs.neovim-nightly-overlay.overlays.default # inputs.neovim-nightly-overlay.overlays.default
gen-luarc.overlays.default
neovim-overlay neovim-overlay
# This adds a function can be used to generate a .luarc.json
# containing the Neovim API all plugins in the workspace directory.
# The generated file can be symlinked in the devShell's shellHook.
inputs.gen-luarc.overlays.default
]; ];
}; };
shell = pkgs.mkShell { shell = pkgs.mkShell {
@ -43,6 +51,7 @@
nvim-dev nvim-dev
]; ];
shellHook = '' shellHook = ''
# symlink the .luarc.json generated in the overlay
ln -fs ${pkgs.nvim-luarc-json} .luarc.json ln -fs ${pkgs.nvim-luarc-json} .luarc.json
# allow quick iteration of lua configs # allow quick iteration of lua configs
ln -Tfns $PWD/nvim ~/.config/nvim-dev ln -Tfns $PWD/nvim ~/.config/nvim-dev

View file

@ -13,17 +13,15 @@ with final.pkgs.lib; let
all-plugins = with pkgs.vimPlugins; [ all-plugins = with pkgs.vimPlugins; [
blink-cmp blink-cmp
blink-copilot
blink-ripgrep-nvim blink-ripgrep-nvim
codecompanion-nvim codecompanion-nvim
conform-nvim conform-nvim
copilot-lua copilot-lua
diffview-nvim diffview-nvim
eyeliner-nvim eyeliner-nvim
friendly-snippets
gitsigns-nvim gitsigns-nvim
hunk-nvim
lazy-nvim lazy-nvim
luasnip
mini-nvim mini-nvim
neogit neogit
nightfox-nvim nightfox-nvim
@ -60,7 +58,6 @@ with final.pkgs.lib; let
nil nil
phpactor phpactor
python312Packages.jedi-language-server python312Packages.jedi-language-server
ruby-lsp
#other #other
jujutsu jujutsu

View file

@ -17,6 +17,7 @@ vim.opt.swapfile = false
vim.opt.tabstop = 2 -- 2 space tabs are based vim.opt.tabstop = 2 -- 2 space tabs are based
vim.opt.updatetime = 250 -- decrease update time vim.opt.updatetime = 250 -- decrease update time
vim.opt.virtualedit = 'onemore' vim.opt.virtualedit = 'onemore'
vim.opt.winborder = 'single'
-- Switch tab length on the fly -- Switch tab length on the fly
vim.keymap.set('n', '\\t', function() vim.keymap.set('n', '\\t', function()
@ -43,56 +44,26 @@ vim.api.nvim_create_autocmd('BufWinEnter', {
}) })
-- Configure Neovim diagnostic messages -- Configure Neovim diagnostic messages
local function prefix_diagnostic(prefix, diagnostic)
return string.format(prefix .. ' %s', diagnostic.message)
end
vim.diagnostic.config { vim.diagnostic.config {
virtual_text = { virtual_text = {
prefix = '', current_line = true,
format = function(diagnostic)
local severity = diagnostic.severity
if severity == vim.diagnostic.severity.ERROR then
return prefix_diagnostic('󰅚', diagnostic)
end
if severity == vim.diagnostic.severity.WARN then
return prefix_diagnostic('', diagnostic)
end
if severity == vim.diagnostic.severity.INFO then
return prefix_diagnostic('', diagnostic)
end
if severity == vim.diagnostic.severity.HINT then
return prefix_diagnostic('󰌶', diagnostic)
end
return prefix_diagnostic('', diagnostic)
end,
}, },
update_in_insert = false,
underline = true, underline = true,
severity_sort = true, severity_sort = true,
float = { float = {
focusable = false, focusable = false,
style = 'minimal', style = 'minimal',
border = 'rounded',
source = 'if_many', source = 'if_many',
header = '',
prefix = '',
}, },
} }
-- random keymaps -- random keymaps
vim.keymap.set('n', 'gq', vim.cmd.bdelete, { noremap = true, silent = true }) vim.keymap.set({ 'v', 'i', }, 'wq', '<esc>l', { noremap = true, silent = true })
vim.keymap.set('n', 'gQ', '<cmd>%bd|e#<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<S-l>', vim.cmd.bnext, { noremap = true, silent = true }) vim.keymap.set('n', '<S-l>', vim.cmd.bnext, { noremap = true, silent = true })
vim.keymap.set('n', '<S-h>', vim.cmd.bprev, { noremap = true, silent = true }) vim.keymap.set('n', '<S-h>', vim.cmd.bprev, { noremap = true, silent = true })
vim.keymap.set({ 'v', 'i' }, 'wq', '<esc>l', { noremap = true, silent = true })
vim.keymap.set('v', "<", "<gv") vim.keymap.set('v', "<", "<gv")
vim.keymap.set('v', ">", ">gv") vim.keymap.set('v', ">", ">gv")
-- clipboard
vim.keymap.set({ 'n', 'v', 'x' }, '<leader>y', '"+y', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>yy', '"+yy', { noremap = true, silent = true })
vim.keymap.set({ 'n', 'v', 'x' }, '<leader>p', '"+p', { noremap = true, silent = true })
-- resize splits if window got resized -- resize splits if window got resized
vim.api.nvim_create_autocmd({ "VimResized" }, { vim.api.nvim_create_autocmd({ "VimResized" }, {
group = vim.api.nvim_create_augroup("resize_splits", { clear = true }), group = vim.api.nvim_create_augroup("resize_splits", { clear = true }),

View file

@ -2,32 +2,19 @@ return {
{ {
"zbirenbaum/copilot.lua", "zbirenbaum/copilot.lua",
cmd = "Copilot", cmd = "Copilot",
keys = {
{
'M-\\',
'<cmd>Copilot panel<CR>',
noremap = true,
desc = 'Copilot panel'
}
},
opts = { opts = {
panel = { panel = {
enabled = true, enabled = true,
auto_refresh = true, auto_refresh = false,
keymap = { keymap = {
jump_prev = "<C-p>", jump_prev = "<C-p>",
jump_next = "<C-n>", jump_next = "<C-n>",
accept = "<C-y>", accept = "<C-y>",
toggle = "<M-CR>"
} }
}, },
suggestion = { suggestion = {
enabled = true, enabled = false,
auto_trigger = true,
hide_during_completion = true,
keymap = {
accept = "<M-]>",
next = "<M-[>",
},
}, },
completion = { completion = {
documentation = { documentation = {
@ -52,10 +39,12 @@ return {
python = true, python = true,
ruby = true, ruby = true,
sh = true, sh = true,
bash = true,
javascript = true,
puppet = true, puppet = true,
yaml = true, yaml = true,
markdown = true, markdown = true,
["."] = false, ["*"] = false,
} }
} }
}, },

View file

@ -1,28 +1,42 @@
return { return {
{ {
'saghen/blink.cmp', 'saghen/blink.cmp',
event = "VeryLazy", event = 'VeryLazy',
dependencies = { dependencies = {
'rafamadriz/friendly-snippets', 'mikavilpas/blink-ripgrep.nvim',
'mikavilpas/blink-ripgrep.nvim' 'fang2hou/blink-copilot',
}, },
opts = { opts = {
sources = { sources = {
default = { default = {
"lsp", 'lsp',
"path", 'path',
"snippets", 'omni',
"buffer", 'ripgrep',
"ripgrep", 'copilot',
}, },
providers = { providers = {
ripgrep = { ripgrep = {
module = "blink-ripgrep", module = 'blink-ripgrep',
name = "rg", name = 'rg',
score_offset = -10, score_offset = -30,
async = true, async = true,
}, },
} copilot = {
module = 'blink-copilot',
name = 'Copilot',
score_offset = 100,
async = true,
opts = {
max_completions = 3,
debounce = 500,
auto_refresh = {
backward = false,
forward = true,
}
},
},
},
}, },
cmdline = { cmdline = {
completion = { completion = {
@ -34,62 +48,22 @@ return {
completion = { completion = {
documentation = { documentation = {
auto_show = true, auto_show = true,
auto_show_delay_ms = 100 auto_show_delay_ms = 500,
},
list = {
selection = {
preselect = false,
auto_insert = true,
}
},
ghost_text = {
enabled = true,
}, },
menu = { menu = {
draw = { draw = {
treesitter = { "lsp" }, treesitter = { 'lsp' },
columns = { columns = {
{ "label", "label_description", gap = 1 }, { 'label', 'label_description', gap = 1 },
{ "source_name", "kind", gap = 1 } { 'source_name', 'kind', gap = 1 },
}, },
} },
}, },
trigger = { trigger = {
show_on_keyword = true, show_on_keyword = true,
} },
}, },
signature = { enabled = true } signature = { enabled = true },
} },
},
{
'L3MON4D3/luasnip',
event = 'VeryLazy',
dependencies = { 'rafamadriz/friendly-snippets' },
config = function()
local ls = require('luasnip')
ls.config.set_config {
history = true,
updateevents = 'TextChanged, TextChangedI',
}
require('luasnip.loaders.from_vscode').lazy_load()
vim.keymap.set({ 'i', 's' }, '<C-J>', function()
if ls.expand_or_jumpable() then
ls.expand_or_jump()
end
end, { silent = true })
vim.keymap.set({ 'i', 's' }, '<C-K>', function()
if ls.jumpable(-1) then
ls.jump(-1)
end
end, { silent = true })
vim.keymap.set({ 'i', 's' }, '<C-L>', function()
if ls.choice_active() then
ls.change_choice(1)
end
end, { silent = true })
end,
}, },
} }

View file

@ -29,7 +29,12 @@ return {
}, },
config = function() config = function()
local lspconfig = require('lspconfig') local lspconfig = require('lspconfig')
local capabilities = require("blink.cmp").get_lsp_capabilities() local capabilities = vim.tbl_deep_extend(
'force',
{},
require("blink.cmp").get_lsp_capabilities(),
vim.lsp.protocol.make_client_capabilities()
)
lspconfig.gopls.setup { lspconfig.gopls.setup {
capabilities = capabilities, capabilities = capabilities,
settings = { settings = {
@ -94,12 +99,6 @@ return {
if not client then if not client then
return return
end end
vim.keymap.set(
'n',
'K',
vim.lsp.buf.hover,
{ buffer = ev.buf, noremap = true, silent = true, desc = 'vim.lsp.buf.hover()' }
)
vim.keymap.set( vim.keymap.set(
'n', 'n',
'grt', 'grt',
@ -112,6 +111,12 @@ return {
'<cmd>Trouble lsp_document_symbols toggle win.position=left <CR>', '<cmd>Trouble lsp_document_symbols toggle win.position=left <CR>',
{ buffer = ev.buf, noremap = true, silent = true, desc = 'Trouble LSP symbols' } { buffer = ev.buf, noremap = true, silent = true, desc = 'Trouble LSP symbols' }
) )
vim.keymap.set(
'n',
'grd',
'<cmd>Trouble lsp_definitions toggle win.position=left <CR>',
{ buffer = ev.buf, noremap = true, silent = true, desc = 'Trouble LSP definition' }
)
vim.keymap.set( vim.keymap.set(
'n', 'n',
'grl', 'grl',
@ -138,6 +143,9 @@ return {
{ {
'stevearc/conform.nvim', 'stevearc/conform.nvim',
event = 'VeryLazy', event = 'VeryLazy',
keys = {
{ "\\f", function() require("conform").format({}) end, mode = { "n", "x" } },
},
opts = { opts = {
notify_no_formatters = false, notify_no_formatters = false,
formatters_by_ft = { formatters_by_ft = {
@ -145,7 +153,7 @@ return {
puppet = { "puppet-lint" }, puppet = { "puppet-lint" },
['*'] = { 'trim_whitespace' } ['*'] = { 'trim_whitespace' }
}, },
format_on_save = { default_format_opts = {
timeout_ms = 500, timeout_ms = 500,
lsp_format = "last", lsp_format = "last",
}, },

View file

@ -9,7 +9,7 @@ return {
event = 'VeryLazy', event = 'VeryLazy',
init = function() init = function()
vim.api.nvim_set_hl(0, 'EyelinerPrimary', { underline = true }) vim.api.nvim_set_hl(0, 'EyelinerPrimary', { underline = true })
vim.api.nvim_set_hl(0, 'EyelinerSecondary', { underline = true }) vim.api.nvim_set_hl(0, 'EyelinerSecondary', { underline = true, bold = true })
end, end,
}, },
{ 'tiagovla/scope.nvim', event = 'VeryLazy', config = true }, { 'tiagovla/scope.nvim', event = 'VeryLazy', config = true },
@ -22,6 +22,12 @@ return {
default_args = { default_args = {
DiffviewOpen = { '--imply-local' }, DiffviewOpen = { '--imply-local' },
}, },
view = {
merge_tool = {
layout = "diff4_mixed",
disable_diagnostics = true,
},
},
keymaps = { keymaps = {
view = { view = {
{ { "n" }, "q", vim.cmd.DiffviewClose, { desc = "Close Diffview" } }, { { "n" }, "q", vim.cmd.DiffviewClose, { desc = "Close Diffview" } },
@ -38,22 +44,22 @@ return {
{ '<leader>nb', vim.cmd.DiffviewOpen, noremap = true, desc = 'diffview open' } { '<leader>nb', vim.cmd.DiffviewOpen, noremap = true, desc = 'diffview open' }
}, },
}, },
-- { {
-- 'NeogitOrg/neogit', 'NeogitOrg/neogit',
-- opts = { opts = {
-- disable_builtin_notifications = true, disable_builtin_notifications = true,
-- integrations = { integrations = {
-- diffview = true, diffview = true,
-- }, },
-- }, },
-- keys = { keys = {
-- { {
-- '<leader>ng', '<leader>ng',
-- function() require('neogit').open() end, function() require('neogit').open() end,
-- { noremap = true, silent = true, desc = 'Neogit' }, { noremap = true, silent = true, desc = 'Neogit' },
-- }, },
-- }, },
-- }, },
{ {
'EdenEast/nightfox.nvim', 'EdenEast/nightfox.nvim',
lazy = false, lazy = false,
@ -123,7 +129,6 @@ return {
end, end,
}, },
}, },
{ '/julienvincent/hunk.nvim', event = 'VeryLazy', opts = {} },
{ {
'gbprod/yanky.nvim', 'gbprod/yanky.nvim',
opts = { opts = {

View file

@ -1,130 +1,145 @@
return { return {
{ {
"folke/snacks.nvim", "folke/snacks.nvim",
dependencies = { "folke/trouble.nvim" }, dependencies = { "folke/trouble.nvim" },
lazy = false, lazy = false,
priority = 1000, priority = 1000,
opts = { opts = {
bigfile = { enabled = true }, bigfile = { enabled = true },
dim = { enabled = true }, bufdelete = { enabled = true },
quickfile = { enabled = true }, dim = { enabled = true },
notifier = { enabled = true }, quickfile = { enabled = true },
scope = { enabled = true }, notifier = { enabled = true },
terminal = { enabled = true }, scope = { enabled = true },
indent = { enabled = true }, terminal = { enabled = true },
input = { enabled = true }, indent = { enabled = true },
words = { enabled = true }, input = { enabled = true },
picker = { words = { enabled = true },
enabled = true, picker = {
matcher = { frecency = true }, enabled = true,
layout = { matcher = { frecency = true },
preset = function() layout = {
return vim.o.columns >= 120 and "telescope" or "vertical" preset = function()
end return vim.o.columns >= 120 and "telescope" or "vertical"
end
},
sources = {
files = { hidden = true },
grep = { hidden = true },
explorer = { hidden = true },
git_files = { untracked = true },
smart = {
multi = { "buffers", "recent", "files", "git_files" }
}
},
actions = {
trouble_open = function(...)
return require("trouble.sources.snacks").actions.trouble_open.action(...)
end,
},
win = {
input = {
keys = {
["wq"] = { "close", mode = "i" },
["<c-t>"] = { "trouble_open", mode = { "n", "i" } },
}
},
list = {
keys = {
["wq"] = { "close", mode = "i" },
}
}
}
},
}, },
sources = { config = function(_, opts)
files = { hidden = true }, require("snacks").setup(opts)
grep = { hidden = true }, vim.api.nvim_set_hl(0, 'SnacksPickerDir', { fg = '#cccccc' })
explorer = { hidden = true }, end,
git_files = { untracked = true }, keys = {
smart = { { '<C-\\>', function() Snacks.terminal.toggle() end, mode = { "n", "t" }, noremap = true, desc = 'terminal open' },
multi = { "buffers", "recent", "files", "git_files" } { '<C-/>', function() Snacks.terminal.toggle('$SHELL') end, mode = { "n", "t" }, noremap = true, desc = 'terminal open' },
} { 'm', function() Snacks.words.jump(1, true) end, noremap = true, desc = 'next reference' },
}, { 'M', function() Snacks.words.jump(-1, true) end, noremap = true, desc = 'next reference' },
actions = { {
trouble_open = function(...) '\\z',
return require("trouble.sources.snacks").actions.trouble_open.action(...) function()
end, if Snacks.dim.enabled then
}, Snacks.dim.disable()
win = { else
input = { Snacks.dim.enable()
keys = { end
["wq"] = { "close", mode = "i" }, end,
["<c-t>"] = { "trouble_open", mode = { "n", "i" } }, noremap = true,
} desc = 'next reference'
}, },
list = { { 'gq', function() Snacks.bufdelete() end, noremap = true, silent = true },
keys = { { 'gQ', function() Snacks.bufdelete.other() end, noremap = true, silent = true },
["wq"] = { "close", mode = "i" }, {
} '<leader>ff',
} function() Snacks.picker.smart() end,
{ noremap = true, silent = true, desc = 'Fuzzy find files' }
},
{
'<leader>fe',
function() Snacks.explorer() end,
{ noremap = true, silent = true, desc = 'snacks explorer' }
},
{
'<leader>fE',
function() Snacks.explorer.reveal() end,
{ noremap = true, silent = true, desc = 'snacks explorer open current file' }
},
{
'<leader>fg',
function() Snacks.picker.git_files() end,
{ noremap = true, silent = true, desc = 'Fuzzy find files' }
},
{
'<leader>fa',
function() Snacks.picker.grep() end,
{ noremap = true, silent = true, desc = 'Fuzzy find grep' }
},
{
'<leader>f8',
function() Snacks.picker.grep_word() end,
{ noremap = true, silent = true, desc = 'Fuzzy find grep word' }
},
{
'<leader>f?',
function() Snacks.picker.pickers() end,
{ noremap = true, silent = true, desc = 'See all pickers' }
},
{
'<leader>f\'',
function() Snacks.picker.marks() end,
{ noremap = true, silent = true, desc = 'Pick marks' }
},
{
'<leader>fu',
function() Snacks.picker.undo() end,
{ noremap = true, silent = true, desc = 'Pick undotree' }
},
{
'<leader>fj',
function() Snacks.picker.jumps() end,
{ noremap = true, silent = true, desc = 'Pick jumps' }
},
{
'<leader>f.',
function() Snacks.picker.resume() end,
{ noremap = true, silent = true, desc = 'Fuzzy find resume' }
},
{
'<leader><leader>',
function() Snacks.picker.buffers() end,
{ noremap = true, silent = true, desc = 'Fuzzy find buffers' }
},
{
'<leader>fn',
function() Snacks.picker.notifications() end,
{ noremap = true, silent = true, desc = 'pick notifications' }
},
} }
},
},
config = function(_, opts)
require("snacks").setup(opts)
vim.api.nvim_set_hl(0, 'SnacksPickerDir', { fg = '#cccccc' })
end,
keys = {
{ '<C-\\>', function() Snacks.terminal.toggle() end, mode = { "n", "t" }, noremap = true, desc = 'terminal open' },
{ '\\\\', function() Snacks.terminal.toggle('$SHELL') end, mode = { "n", "t" }, noremap = true, desc = 'terminal open' },
{ 'm', function() Snacks.words.jump(1, true) end, noremap = true, desc = 'next reference' },
{ 'M', function() Snacks.words.jump(-1, true) end, noremap = true, desc = 'next reference' },
{
'<leader>ff',
function() Snacks.picker.smart() end,
{ noremap = true, silent = true, desc = 'Fuzzy find files' }
},
{
'<leader>fe',
function() Snacks.explorer() end,
{ noremap = true, silent = true, desc = 'snacks explorer' }
},
{
'<leader>fE',
function() Snacks.explorer.reveal() end,
{ noremap = true, silent = true, desc = 'snacks explorer open current file' }
},
{
'<leader>fg',
function() Snacks.picker.git_files() end,
{ noremap = true, silent = true, desc = 'Fuzzy find files' }
},
{
'<leader>fa',
function() Snacks.picker.grep() end,
{ noremap = true, silent = true, desc = 'Fuzzy find grep' }
},
{
'<leader>f8',
function() Snacks.picker.grep_word() end,
{ noremap = true, silent = true, desc = 'Fuzzy find grep word' }
},
{
'<leader>f?',
function() Snacks.picker.pickers() end,
{ noremap = true, silent = true, desc = 'See all pickers' }
},
{
'<leader>f\'',
function() Snacks.picker.marks() end,
{ noremap = true, silent = true, desc = 'Pick marks' }
},
{
'<leader>fu',
function() Snacks.picker.undo() end,
{ noremap = true, silent = true, desc = 'Pick undotree' }
},
{
'<leader>fj',
function() Snacks.picker.jumps() end,
{ noremap = true, silent = true, desc = 'Pick jumps' }
},
{
'<leader>f.',
function() Snacks.picker.resume() end,
{ noremap = true, silent = true, desc = 'Fuzzy find resume' }
},
{
'<leader><leader>',
function() Snacks.picker.buffers() end,
{ noremap = true, silent = true, desc = 'Fuzzy find buffers' }
},
{
'<leader>fn',
function() Snacks.picker.notifications() end,
{ noremap = true, silent = true, desc = 'pick notifications' }
},
} }
}
} }