return { -- ╭───────────────────────────────────────╮ -- │ bufferline - for mistakes and stuff.. │ -- ╰───────────────────────────────────────╯ { "akinsho/bufferline.nvim", dependencies = { "echasnovski/mini.icons" }, version = "*", opts = { options = { diagnostics = "nvim_lsp", diagnostics_update_on_event = true, -- use nvim's diagnostic handler diagnostics_indicator = function(count, level) local icon = level:match("error") and " " or " " return " " .. icon .. count end, offsets = { { filetype = "neo-tree", text = "File Explorer", highlight = "Directory" } }, -- ─< style >─────────────────────────────────────────────────────────────────────────── indicator = { icon = "▎", -- this should be omitted if indicator style is not 'icon' style = "icon", }, move_wraps_at_ends = true, -- whether or not the move command "wraps" at the first or last position separator_style = "slope", -- ─< icons >─────────────────────────────────────────────────────────────────────────── modified_icon = "󱞇", left_trunc_marker = "󰬩", right_trunc_marker = "󰬫", themable = true, -- allows highlight groups to be overriden i.e. sets highlights as default close_icon = "󱄊", buffer_close_icon = "󱄊", show_buffer_icons = true, -- disable filetype icons for buffers show_buffer_close_icons = true, show_close_icon = true, show_tab_indicators = true, hover = { enabled = true, delay = 80, reveal = { "close" }, hide = { "nvim_lsp" }, }, -- You can set buffer_mode to "list" or "tabbed" based on your preference. buffer_mode = "list", color_icons = true, -- whether or not to add the filetype icon highlights }, }, config = function(_, opts) require("bufferline").setup(opts) -- Remap the tab key for buffer navigation (you can adjust the keys as needed) vim.keymap.set("n", "", "BufferLineCycleNext") vim.keymap.set("n", "", "BufferLineCyclePrev") end, }, -- ╭───────────────────────────────────╮ -- │ cmdline - for nice command inputs │ -- ╰───────────────────────────────────╯ { "VonHeikemen/fine-cmdline.nvim", dependencies = { { "MunifTanjim/nui.nvim" }, }, config = function() require("fine-cmdline").setup({ cmdline = { enable_keymaps = true, smart_history = true, prompt = " ", }, popup = { position = { row = "10%", col = "50%", }, size = { width = "60%", }, border = { style = "rounded", }, win_options = { winhighlight = "Normal:Normal,FloatBorder:FloatBorder", }, }, -- hooks = { -- before_mount = function(input) -- -- code -- end, -- after_mount = function(input) -- -- code -- end, -- set_keymaps = function(imap, feedkeys) -- -- code -- end, -- }, }) end, vim.api.nvim_set_keymap("n", ":", "FineCmdline", { noremap = true }), vim.keymap.set("n", "T", "FineCmdline"), }, -- ╭───────────────────────────────────────╮ -- │ barbecue - for a nice breadcrump menu │ -- ╰───────────────────────────────────────╯ { "utilyre/barbecue.nvim", name = "barbecue", version = "*", dependencies = { "SmiteshP/nvim-navic", "echasnovski/mini.icons", -- optional dependency }, opts = { theme = { -- this highlight is used to override other highlights -- you can take advantage of its `bg` and set a background throughout your winbar -- (e.g. basename will look like this: { fg = "#c0caf5", bold = true }) normal = { fg = "#c0caf5" }, -- these highlights correspond to symbols table from config ellipsis = { fg = "#737aa2" }, separator = { fg = "#737aa2" }, modified = { fg = "#737aa2" }, -- these highlights represent the _text_ of three main parts of barbecue dirname = { fg = "#737aa2" }, basename = { bold = true }, context = {}, -- these highlights are used for context/navic icons context_file = { fg = "#ac8fe4" }, context_module = { fg = "#ac8fe4" }, context_namespace = { fg = "#ac8fe4" }, context_package = { fg = "#ac8fe4" }, context_class = { fg = "#ac8fe4" }, context_method = { fg = "#ac8fe4" }, context_property = { fg = "#ac8fe4" }, context_field = { fg = "#ac8fe4" }, context_constructor = { fg = "#ac8fe4" }, context_enum = { fg = "#ac8fe4" }, context_interface = { fg = "#ac8fe4" }, context_function = { fg = "#ac8fe4" }, context_variable = { fg = "#ac8fe4" }, context_constant = { fg = "#ac8fe4" }, context_string = { fg = "#ac8fe4" }, context_number = { fg = "#ac8fe4" }, context_boolean = { fg = "#ac8fe4" }, context_array = { fg = "#ac8fe4" }, context_object = { fg = "#ac8fe4" }, context_key = { fg = "#ac8fe4" }, context_null = { fg = "#ac8fe4" }, context_enum_member = { fg = "#ac8fe4" }, context_struct = { fg = "#ac8fe4" }, context_event = { fg = "#ac8fe4" }, context_operator = { fg = "#ac8fe4" }, context_type_parameter = { fg = "#ac8fe4" }, }, }, }, -- ╭─────────────────────────────────╮ -- │ indentlines - nice indent lines │ -- ╰─────────────────────────────────╯ { "lukas-reineke/indent-blankline.nvim", event = { "BufReadPre", "BufNewFile" }, main = "ibl", opts = { indent = { char = "┊", tab_char = "┊", -- char = "│", -- tab_char = "│", }, }, }, -- ╭──────────────────╮ -- │ markdown plugins │ -- ╰──────────────────╯ { "MeanderingProgrammer/render-markdown.nvim", opts = {}, -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" }, -- if you use standalone mini plugins -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons }, -- ╭────────────────────────────────────╮ -- │ notify for excellent notifications │ -- ╰────────────────────────────────────╯ { "rcarriga/nvim-notify", config = function() require("notify").setup({ stages = "slide", background_colour = "FloatShadow", max_width = 120, timeout = 2750, render = "wrapped-compact", -- Minimum/Maximum width for notification windows minimum_width = 30, maximum_width = 120, -- Function called when a new window is opened, use for changing win settings/config on_open = nil, -- Function called when a window is closed on_close = nil, icons = { ERROR = "", -- alternate symbol  WARN = "", INFO = "", DEBUG = "", TRACE = "", }, }) vim.notify = require("notify") end, }, -- ╭──────────────────────────────╮ -- │ slimline - nice bar for nvim │ -- ╰──────────────────────────────╯ { -- Calls `require('slimline').setup({})` "sschleemilch/slimline.nvim", opts = { bold = true, -- makes primary parts and mode bold verbose_mode = false, -- Mode as single letter or as a word style = "bg", -- or "fg". Whether highlights should be applied to bg or fg of components mode_follow_style = true, -- Whether the mode color components should follow the style option components = { -- Choose components and their location left = { "mode", -- "path", -- "git", }, center = { "path", "git", }, right = { "diagnostics", "filetype_lsp", "progress", }, }, spaces = { components = " ", -- string between components left = " ", -- string at the start of the line right = " ", -- string at the end of the line }, sep = { hide = { first = false, -- hides the first separator last = false, -- hides the last separator }, left = "", -- left separator of components right = "", -- right separator of components }, hl = { modes = { normal = "Type", -- highlight base of modes insert = "Function", pending = "Boolean", visual = "Keyword", command = "String", }, base = "Comment", -- highlight of everything in in between components primary = "Normal", -- highlight of primary parts (e.g. filename) secondary = "Comment", -- highlight of secondary parts (e.g. filepath) }, icons = { diagnostics = { ERROR = " ", WARN = " ", HINT = " ", INFO = " ", }, git = { branch = "", }, folder = " ", lines = " ", }, }, }, -- ╭────────────────────────────────────────╮ -- │ which key - to know what to press next │ -- ╰────────────────────────────────────────╯ { "folke/which-key.nvim", event = "VeryLazy", init = function() vim.o.timeout = true vim.o.timeoutlen = 350 end, opts = { -- your configuration comes here -- or leave it empty to use the default settings -- refer to the configuration section below }, }, }