Files
setup/.config/nvim/after/plugin/snacks.lua
T
2026-04-30 15:20:12 +02:00

95 lines
2.6 KiB
Lua

require("snacks").setup {
image = {
enabled = true,
resolve = function(path, src)
local api = require "obsidian.api"
if api.path_is_note(path) then
return api.resolve_attachment_path(src)
end
end
},
indent = {
enabled = true,
indent = {
enabled = true,
char = ""
},
scope = {
enabled = true,
char = ""
}
},
picker = {
enabled = true,
ui_select = true,
formatters = {
file = {
truncate = "left",
min_width = 160,
},
},
},
dashboard = {
enabled = true,
},
terminal = {
enabled = true,
},
}
local picker = Snacks.picker
vim.keymap.set('n', '<leader>pf', function() picker.files() end)
vim.keymap.set('n', '<C-p>p', function() picker.git_files() end)
vim.keymap.set('n', '<leader>sw', function() picker.lsp_workspace_symbols() end)
vim.keymap.set('n', '<leader>ps', function()
picker.grep({ search = vim.fn.input("Grep > "), live = false })
end)
local term_buf
local function find_term_win()
if not (term_buf and vim.api.nvim_buf_is_valid(term_buf)) then return end
for _, w in ipairs(vim.api.nvim_list_wins()) do
if vim.api.nvim_win_get_buf(w) == term_buf then return w end
end
end
local function toggle_term(fullscreen)
local win_opts = fullscreen and {
position = "float",
width = 0.98,
height = 0.98,
border = "rounded",
} or {
position = "bottom",
height = 0.2,
border = "none",
}
local existing = find_term_win()
if existing then
local is_float = vim.api.nvim_win_get_config(existing).relative ~= ""
vim.api.nvim_win_close(existing, true)
if is_float == fullscreen then return end
end
if term_buf and vim.api.nvim_buf_is_valid(term_buf) then
Snacks.win(vim.tbl_extend("force", win_opts, {
buf = term_buf,
enter = true,
bo = { filetype = "snacks_terminal" },
}))
vim.cmd.startinsert()
else
local term = Snacks.terminal.toggle(nil, { win = win_opts })
if term then term_buf = term.buf end
end
end
vim.keymap.set("n", "<leader>tt", function() toggle_term(false) end, { desc = "Terminal (split)" })
vim.keymap.set("n", "<leader>tT", function() toggle_term(true) end, { desc = "Terminal (fullscreen)" })
vim.keymap.set("t", "<C-t>", function()
local w = find_term_win()
if w then vim.api.nvim_win_close(w, true) end
end, { desc = "Hide terminal" })