-- UI and appearance plugins return { { "zenbones-theme/zenbones.nvim", lazy = false, priority = 1000, dependencies = "rktjmp/lush.nvim", config = function() if vim.g.light_mode then vim.o.background = "light" else vim.o.background = "dark" end vim.cmd.colorscheme("zenwritten") end, }, { "folke/todo-comments.nvim", dependencies = { "nvim-lua/plenary.nvim" }, opts = { signs = false } }, { "echasnovski/mini.nvim", keys = { { "m", function() require("mini.files").open(vim.api.nvim_buf_get_name(0), true) end, desc = "Open mini.files (Directory of Current File)", }, }, config = function() require("mini.files").setup() local getWords = require("utils.statusline").getWords require("mini.statusline").setup({ content = { active = function() local mode, mode_hl = MiniStatusline.section_mode({ trunc_width = 120 }) local git = MiniStatusline.section_git({ trunc_width = 75 }) local diagnostics = MiniStatusline.section_diagnostics({ trunc_width = 75 }) local filename = MiniStatusline.section_filename({ trunc_width = 140 }) local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 }) local location = MiniStatusline.section_location({ trunc_width = 75 }) local search = MiniStatusline.section_searchcount({ trunc_width = 75 }) local words = getWords() return MiniStatusline.combine_groups({ { hl = mode_hl, strings = { mode } }, { hl = "MiniStatuslineDevinfo", strings = { git, diagnostics } }, "%<", { hl = "MiniStatuslineFilename", strings = { filename } }, "%=", { hl = "MiniStatuslineFileinfo", strings = { fileinfo } }, { hl = "MiniStatuslineFileinfo", strings = { words } }, { hl = mode_hl, strings = { search, location } }, }) end, }, }) end, }, { "nvim-treesitter/nvim-treesitter", branch = "main", main = "nvim-treesitter", build = ":TSUpdate", init = function() -- Install parsers that aren't already present local ensure_installed = { "bash", "c", "html", "lua", "markdown", "vim", "vimdoc" } local already_installed = require("nvim-treesitter.config").get_installed() local to_install = vim.iter(ensure_installed) :filter(function(parser) return not vim.tbl_contains(already_installed, parser) end) :totable() if #to_install > 0 then require("nvim-treesitter").install(to_install) end end, }, { "folke/snacks.nvim", priority = 1000, lazy = false, opts = { dashboard = { enabled = true }, input = { enabled = true }, terminal = { enabled = true }, notify = { enabled = true }, }, keys = { { "T", function() Snacks.terminal() end, desc = "Toggle Terminal", }, }, }, { "MeanderingProgrammer/render-markdown.nvim", dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, opts = {}, }, { "folke/trouble.nvim", opts = {}, cmd = "Trouble", keys = { { "xx", "Trouble diagnostics toggle", desc = "Diagnostics (Trouble)", }, { "xX", "Trouble diagnostics toggle filter.buf=0", desc = "Buffer Diagnostics (Trouble)", }, { "cs", "Trouble symbols toggle focus=false", desc = "Symbols (Trouble)", }, { "cl", "Trouble lsp toggle focus=false win.position=right", desc = "LSP Definitions / references / ... (Trouble)", }, { "xL", "Trouble loclist toggle", desc = "Location List (Trouble)", }, { "xQ", "Trouble qflist toggle", desc = "Quickfix List (Trouble)", }, }, }, }