diff --git a/nvim/lua/plugins/snacks.lua b/nvim/lua/plugins/snacks.lua new file mode 100644 index 0000000..218d6ab --- /dev/null +++ b/nvim/lua/plugins/snacks.lua @@ -0,0 +1,179 @@ +return { + { + "snacks-nvim", + event = "DeferredUIEnter", + opts = { + input = { + enabled = true, + }, + indent = { + enabled = true, + indent = { + char = "▏", + }, + animate = { + enabled = false, + }, + scope = { + char = "▏", + }, + chunk = { + char = { + vertical = "▏", + }, + }, + }, + zen = { + toggles = { + dim = false, + }, + show = { + statusline = true, + }, + }, + styles = { + input = { + relative = "cursor", + row = -3, + col = 0, + keys = { + i_esc = { "", { "cmp_close", "cancel" }, mode = "i", expr = true }, + }, + }, + zen = { + width = 200, + backdrop = { + transparent = false, + blend = 0, + }, + }, + }, + picker = { + win = { + input = { + keys = { + [""] = { "close", mode = { "n", "i" } }, + [""] = { "close", mode = { "n", "i" } }, + [""] = { "preview_scroll_up", mode = { "i", "n" } }, + [""] = { "preview_scroll_down", mode = { "i", "n" } }, + [""] = function() vim.cmd "normal! I" end, + [""] = function() vim.cmd "startinsert!" end, + }, + }, + }, + sources = { + files = { + hidden = true, + }, + grep = { + layout = "ivy", + hidden = true, + }, + git_branches = { + all = true, + }, + git_log = { + confirm = "git_show", + }, + git_log_file = { + confirm = "git_show", + }, + }, + actions = { + git_show = function(picker, item) + picker:close() + Snacks.picker.git_show({ ref = item.commit }) + end, + }, + layouts = { + default = { + layout = { + box = 'horizontal', + backdrop = false, + width = 0.8, + height = 0.9, + border = 'none', + { + box = 'vertical', + { + win = 'input', + title = ' {source} {live} ', + title_pos = 'center', + border = 'solid', + height = 1, + }, + { + win = 'list', + border = 'solid', + }, + }, + { + win = 'preview', + width = 0.5, + title = ' {preview} ', + title_pos = 'center', + border = "top", + }, + }, + }, + ivy = { + layout = { + box = "horizontal", + backdrop = false, + width = 0, + height = 0.5, + border = "none", + position = "bottom", + { + box = "vertical", + border = "none", + { + win = "input", + title = " {title} {live} ", + height = 1, + border = "solid" + }, + { win = "list", border = "solid" }, + }, + { + win = "preview", + title = " {preview} ", + border = "top", + width = vim.o.columns <= 125 and 0.7 or 0.55, + }, + }, + }, + }, + }, + }, + after = function(plug) + require("snacks").setup(plug.opts) + + vim.keymap.set("n", "zz", function() Snacks.zen() end, { desc = "Toggle zen mode" }) + + vim.keymap.set("n", "f", function() + Snacks.picker.files() + end, { desc = "Find files" }) + + vim.keymap.set("n", "F", function() + Snacks.picker.grep() + end, { desc = "Grep" }) + + vim.keymap.set("n", "gl", function() + Snacks.picker.git_log() + end, { desc = "Git log" }) + + vim.keymap.set("n", "gh", function() + Snacks.picker.git_log_file() + end, { desc = "Git logs buffer" }) + + vim.keymap.set("n", "gB", function() + Snacks.picker.git_branches() + end, { desc = "Git branches" }) + + vim.keymap.set("n", "gs", function() + Snacks.picker.git_status() + end, { desc = "Git status" }) + end, + }, +} diff --git a/nvim/lua/plugins/ui.lua b/nvim/lua/plugins/ui.lua index 462d1b1..79cbb45 100644 --- a/nvim/lua/plugins/ui.lua +++ b/nvim/lua/plugins/ui.lua @@ -59,177 +59,4 @@ return { require("virt-column").setup(plug.opts) end, }, - - { - "snacks-nvim", - event = "DeferredUIEnter", - opts = { - input = { - enabled = true, - }, - indent = { - enabled = true, - indent = { - char = "▏", - }, - animate = { - enabled = false, - }, - scope = { - char = "▏", - }, - chunk = { - char = { - vertical = "▏", - }, - }, - }, - zen = { - toggles = { - dim = false, - }, - show = { - statusline = true, - }, - }, - styles = { - input = { - relative = "cursor", - row = -3, - col = 0, - keys = { - i_esc = { "", { "cmp_close", "cancel" }, mode = "i", expr = true }, - }, - }, - zen = { - width = 200, - backdrop = { - transparent = false, - blend = 0, - }, - }, - }, - picker = { - win = { - input = { - keys = { - [""] = { "close", mode = { "n", "i" } }, - [""] = { "close", mode = { "n", "i" } }, - [""] = { "preview_scroll_up", mode = { "i", "n" } }, - [""] = { "preview_scroll_down", mode = { "i", "n" } }, - [""] = function() vim.cmd "normal! I" end, - [""] = function() vim.cmd "startinsert!" end, - }, - }, - }, - sources = { - files = { - hidden = true, - }, - grep = { - layout = "ivy", - hidden = true, - }, - git_branches = { - all = true, - }, - -- TODO: make a git_show picker like i did with telescope - git_log = { - confirm = false, - }, - git_log_file = { - confirm = false, - }, - }, - layouts = { - default = { - layout = { - box = 'horizontal', - backdrop = false, - width = 0.8, - height = 0.9, - border = 'none', - { - box = 'vertical', - { - win = 'input', - title = ' {source} {live} ', - title_pos = 'center', - border = 'solid', - height = 1, - }, - { - win = 'list', - border = 'solid', - }, - }, - { - win = 'preview', - width = 0.5, - title = ' {preview} ', - title_pos = 'center', - border = "top", - }, - }, - }, - ivy = { - layout = { - box = "horizontal", - backdrop = false, - width = 0, - height = 0.5, - border = "none", - position = "bottom", - { - box = "vertical", - border = "none", - { - win = "input", - title = " {title} {live} ", - height = 1, - border = "solid" - }, - { win = "list", border = "solid" }, - }, - { - win = "preview", - title = " {preview} ", - border = "top", - width = vim.o.columns <= 125 and 0.7 or 0.55, - }, - }, - }, - }, - }, - }, - after = function(plug) - require("snacks").setup(plug.opts) - - vim.keymap.set("n", "zz", function() Snacks.zen() end, { desc = "Toggle zen mode" }) - - vim.keymap.set("n", "f", function() - Snacks.picker.files() - end, { desc = "Find files" }) - - vim.keymap.set("n", "F", function() - Snacks.picker.grep() - end, { desc = "Grep" }) - - vim.keymap.set("n", "gl", function() - Snacks.picker.git_log() - end, { desc = "Git log" }) - - vim.keymap.set("n", "gh", function() - Snacks.picker.git_log_file() - end, { desc = "Git logs buffer" }) - - vim.keymap.set("n", "gB", function() - Snacks.picker.git_branches() - end, { desc = "Git branches" }) - - vim.keymap.set("n", "gs", function() - Snacks.picker.git_status() - end, { desc = "Git status" }) - end, - }, }