diff --git a/common/.config/nvim/lua/plugins/code-generic.lua b/common/.config/nvim/lua/plugins/code-generic.lua index da9cc0c..436c949 100644 --- a/common/.config/nvim/lua/plugins/code-generic.lua +++ b/common/.config/nvim/lua/plugins/code-generic.lua @@ -114,7 +114,11 @@ return { { "echasnovski/mini.indentscope", cond = require("config.util").is_not_vscode(), - opts = { symbol = "│", options = { try_as_border = true } }, + opts = { + delay = 100, + symbol = "│", + options = { try_as_border = true }, + }, init = function() vim.api.nvim_create_autocmd("FileType", { pattern = { @@ -165,46 +169,6 @@ return { end, }, - -- Automatically highlights other instances of the word under cursor - { - "RRethy/vim-illuminate", - lazy = false, - cond = require("config.util").is_not_vscode(), - opts = { - delay = 200, - large_file_cutoff = 2000, - large_file_override = { - providers = { "lsp" }, - }, - }, - config = function(_, opts) - -- Copied from LazyNvim - require("illuminate").configure(opts) - - local function map(key, dir, buffer) - vim.keymap.set("n", key, function() - require("illuminate")["goto_" .. dir .. "_reference"](false) - end, { desc = dir:sub(1, 1):upper() .. dir:sub(2) .. " Reference", buffer = buffer }) - end - - map("]]", "next") - map("[[", "prev") - - -- also set it after loading ftplugins, since a lot overwrite [[ and ]] - vim.api.nvim_create_autocmd("FileType", { - callback = function() - local buffer = vim.api.nvim_get_current_buf() - map("]]", "next", buffer) - map("[[", "prev", buffer) - end, - }) - end, - keys = { - { "]]", desc = "Next Reference" }, - { "[[", desc = "Prev Reference" }, - }, - }, - -- Finds and lists all of the TODO, HACK, BUG, etc comment { "folke/todo-comments.nvim", diff --git a/common/.config/nvim/lua/plugins/ui.lua b/common/.config/nvim/lua/plugins/ui.lua index 642511d..bb83c28 100644 --- a/common/.config/nvim/lua/plugins/ui.lua +++ b/common/.config/nvim/lua/plugins/ui.lua @@ -104,7 +104,11 @@ return { illuminate = { lsp = true, }, + snacks = true, which_key = true, + + -- These were enabled by default + render_markdown = false, }, flavour = "mocha", @@ -178,41 +182,6 @@ return { end, }, - -- Better `vim.notify()` - { - "rcarriga/nvim-notify", - cond = require("config.util").is_not_vscode(), - keys = { - { - "xn", - function() - require("notify").dismiss({ silent = true, pending = true }) - end, - desc = "Dismiss all Notifications", - }, - { - "xx", - function() - require("notify").dismiss({ silent = true, pending = true }) - end, - desc = "Dismiss all Notifications", - }, - }, - opts = { - render = "wrapped-compact", -- Smaller popups - timeout = 2000, - max_height = function() - return math.floor(vim.o.lines * 0.25) - end, - max_width = function() - return math.floor(vim.o.columns * 0.5) - end, - on_open = function(win) - vim.api.nvim_win_set_config(win, { zindex = 100 }) - end, - }, - }, - -- Completely replaces the UI for messages, cmdline and the popupmenu. { "folke/noice.nvim", @@ -220,7 +189,6 @@ return { event = "VeryLazy", dependencies = { "MunifTanjim/nui.nvim", - "rcarriga/nvim-notify", }, opts = { lsp = { @@ -394,4 +362,132 @@ return { } end, }, + + -- Various Quality of Life plugins into 1 + { + "folke/snacks.nvim", + priority = 1000, + lazy = false, + cond = require("config.util").is_not_vscode(), + opts = { + -- Want these but after they are fixed + indent = { + -- NOTE: highlights for blanklines are too noisy + enabled = false, + }, + scope = { + -- NOTE: mini.indentscope does this and indent guide + enabled = false, + }, + statuscolumn = { + -- NOTE: just did not work + enabled = false, + }, + + bigfile = { + enabled = true, + notify = true, + size = 10 * 1024 * 1024, -- 10 MB + }, + input = { + enabled = true, + }, + lazygit = { + enabled = true, + configure = true, + }, + notifier = { + enabled = true, + timeout = 2000, + style = "fancy", + }, + scroll = { + enabled = true, + }, + scratch = { + enabled = true, + }, + word = { + enabled = true, + }, + zen = { + enabled = true, + }, + + animate = { + fps = 60, + duration = { + step = 10, + total = 200, + }, + }, + styles = { + notification = { + wo = { + wrap = true, + }, + }, + }, + }, + keys = { + { + "//", + function() + Snacks.scratch() + end, + desc = "Toggle Scratch Buffer", + }, + { + "/s", + function() + Snacks.scratch.select() + end, + desc = "Toggle Scratch Buffer", + }, + { + "gL", + function() + Snacks.lazygit.open(opts) + end, + desc = "Toggle LazyGit", + }, + { + "]]", + function() + Snacks.words.jump(vim.v.count1) + end, + desc = "Next Reference", + mode = { "n", "t" }, + }, + { + "[[", + function() + Snacks.words.jump(-vim.v.count1) + end, + desc = "Prev Reference", + mode = { "n", "t" }, + }, + { + "xx", + function() + Snacks.notifier.hide() + end, + desc = "Hide Notifications", + }, + { + "nn", + function() + Snacks.notifier.show_history() + end, + desc = "Notification History", + }, + { + "z", + function() + Snacks.zen() + end, + desc = "Toggle Zen Mode", + }, + }, + }, }