dotfiles/home/nvim/files/lua/plugins/snacks.lua

84 lines
3.3 KiB
Lua

return {
"folke/snacks.nvim",
lazy = false,
opts = {
gitbrowse = {
open = function(url)
vim.fn.setreg('+', url) -- Copy to clipboard
end
},
bigfile = { enabled = true },
explorer = { enabled = true },
indent = {
enabled = true,
animate = {
enabled = false
}
},
input = { enabled = true },
picker = { enabled = true },
notifier = { enabled = true },
quickfile = { enabled = true },
scope = {
enabled = true,
keys = {
textobject = {
ii = {
min_size = 2, -- minimum size of the scope
edge = false, -- inner scope
cursor = false,
treesitter = { blocks = { enabled = false } },
desc = "inner scope",
},
ai = {
cursor = false,
min_size = 2, -- minimum size of the scope
treesitter = { blocks = { enabled = false } },
desc = "full scope",
},
},
jump = {
["gt"] = {
min_size = 1, -- allow single line scopes
bottom = false,
cursor = false,
edge = true,
treesitter = { blocks = { enabled = false } },
desc = "jump to top edge of scope",
},
["gb"] = {
min_size = 1, -- allow single line scopes
bottom = true,
cursor = false,
edge = true,
treesitter = { blocks = { enabled = false } },
desc = "jump to bottom edge of scope",
},
}
}
},
statuscolumn = { enabled = true },
words = { enabled = true },
},
config = function(_, opts)
vim.api.nvim_create_user_command("GitLink", function()
require("snacks").gitbrowse()
end, {})
vim.api.nvim_create_user_command("GitBlameLine", function()
require("snacks").git.blame_line()
end, {})
require("snacks").setup(opts)
end,
keys = {
{"<leader>t", function() require("snacks").explorer() end},
{"<c-m>", function() require("snacks").picker.lsp_symbols({layout = {preset = "right"}, focus="list"}) end},
{"<c-s-m>", function() require("snacks").picker.lsp_workspace_symbols({layout = {preset = "vertical"}}) end},
{"<c-space>", function() require("snacks").picker.recent({layout = {preset = "vertical"}}) end},
{"<c-cr>", function() require("snacks").picker({layout = {preset = "vscode"}}) end},
{"<c-p>", function() require("snacks").picker.git_files({layout = {preset = "vscode"}}) end},
{"<c-o>", function() require("snacks").picker.buffers({layout = {preset = "vscode"}}) end},
{"<c-f>", function() require("snacks").picker.grep({layout = {preset = "vertical"}}) end},
{"<c-n>", function() require("snacks").words.jump(1) end},
}
}