return { { "rcarriga/nvim-notify", keys = { { "un", function() require("notify").dismiss({ silent = true, pending = true }) end, desc = "Dismiss all Notifications", }, }, opts = { timeout = 3000, max_height = function() return math.floor(vim.o.lines * 0.75) end, max_width = function() return math.floor(vim.o.columns * 0.75) end, }, }, { "nvim-lualine/lualine.nvim", event = "VeryLazy", opts = function() return { options = { theme = "auto", globalstatus = true, disabled_filetypes = { statusline = { "dashboard", "alpha" } }, }, sections = { lualine_a = { "mode" }, lualine_b = { "branch" }, lualine_c = { { "diagnostics", symbols = { error = " ", warn = " ", info = " ", hint = "󰌵", }, }, { "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } }, { "filename", path = 1, symbols = { modified = "  ", readonly = "", unnamed = "" } }, { function() return require("nvim-navic").get_location() end, cond = function() return package.loaded["nvim-navic"] and require("nvim-navic").is_available() end, }, }, lualine_x = { { function() return " " .. require("dap").status() end, cond = function() return package.loaded["dap"] and require("dap").status() ~= "" end, }, { require("lazy.status").updates, cond = require("lazy.status").has_updates }, { "diff", symbols = { added = "", modified = "󰄱", removed = "✖", }, }, }, lualine_y = { { "progress", separator = " ", padding = { left = 1, right = 0 } }, { "location", padding = { left = 0, right = 1 } }, }, lualine_z = { function() return " " .. os.date("%R") end, }, }, extensions = { "neo-tree", "lazy" }, } end, }, { "lukas-reineke/indent-blankline.nvim", lazy = false, }, { "echasnovski/mini.indentscope", version = false, -- wait till new 0.7.0 release to put it back on semver event = { "BufReadPre", "BufNewFile" }, opts = { -- symbol = "▏", symbol = "│", options = { try_as_border = true }, }, init = function() vim.api.nvim_create_autocmd("FileType", { pattern = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason", "notify", "toggleterm", "lazyterm", }, callback = function() vim.b.miniindentscope_disable = true end, }) end, }, { "akinsho/bufferline.nvim", event = "VeryLazy", keys = { { "bp", "BufferLineTogglePin", desc = "Toggle pin" }, { "bP", "BufferLineGroupClose ungrouped", desc = "Delete non-pinned buffers" }, }, opts = { options = { -- stylua: ignore close_command = function(n) require("mini.bufremove").delete(n, false) end, -- stylua: ignore right_mouse_command = function(n) require("mini.bufremove").delete(n, false) end, diagnostics = "nvim_lsp", always_show_bufferline = false, diagnostics_indicator = function(_, _, diag) local ret = (diag.error and " " .. diag.error or "") .. (diag.warning and " " .. diag.warning or "") return vim.trim(ret) end, offsets = { { filetype = "neo-tree", text = "Neo-tree", highlight = "Directory", text_align = "left", }, }, }, }, }, { "folke/which-key.nvim", event = "VeryLazy", opts = { plugins = { spelling = true }, defaults = { mode = { "n", "v" }, ["g"] = { name = "+goto" }, ["gz"] = { name = "+surround" }, ["]"] = { name = "+next" }, ["["] = { name = "+prev" }, ["b"] = { name = "+buffer" }, ["c"] = { name = "+colors" }, ["l"] = { name = "+lsp" }, ["f"] = { name = "+file/find" }, ["g"] = { name = "+git" }, ["h"] = { name = "+harpoon" }, ["u"] = { name = "+ui" }, ["w"] = { name = "+windows" }, ["x"] = { name = "+diagnostics/quickfix" }, }, }, config = function(_, opts) local wk = require("which-key") wk.setup(opts) wk.register(opts.defaults) end, }, { "folke/noice.nvim", event = "VeryLazy", opts = { lsp = { override = { ["vim.lsp.util.convert_input_to_markdown_lines"] = true, ["vim.lsp.util.stylize_markdown"] = true, ["cmp.entry.get_documentation"] = true, }, hover = { enabled = false }, signature = { enabled = false }, }, }, dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify", } }, -- icons { "nvim-tree/nvim-web-devicons", lazy = true }, -- ui components { "MunifTanjim/nui.nvim", lazy = true }, { "RRethy/vim-illuminate", event = { "BufReadPost", "BufNewFile" }, opts = { delay = 200, large_file_cutoff = 2000, providers = { 'lsp', 'treesitter', 'regex', }, large_file_overrides = { providers = { "lsp" }, }, }, config = function(_, opts) 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" }, }, }, }