return { { "akinsho/toggleterm.nvim", keys = { { "", desc = "Toggle Terminal" }, { "mr", "TermExec cmd=\"make run\"", desc = "Make (run)" }, { "mb", "TermExec cmd=\"make build\"", desc = "Make (build)" }, { "mc", "TermExec cmd=\"make clean\"", desc = "Make (clean)" }, { "mt", "TermExec cmd=\"make test\"", desc = "Make (test)" }, }, opts = { autochdir = true, open_mapping = "", direction = "float", shade_terminals = false, float_opts = { border = require("globals").border_chars, }, highlights = { ["FloatBorder"] = { link = "FloatBorder" } }, }, }, { name = "winpad", dir = vim.fn.stdpath("config") .. "/lua/winpad", config = function() local winpad = require("winpad") winpad.setup({ enabled = true, }) vim.keymap.set("n", "x", winpad.toggle, { desc = "Toggle Window Padding" }) end }, { "backdround/global-note.nvim", keys = { { "nn", "ProjectNote", desc = "Project Note" }, { "nf", "FileNote", desc = "File Note" }, { "N", "GlobalNote", desc = "Global Note" }, }, config = function() local global_note = require("global-note") global_note.setup({ title = "Global Note", directory = "~/Documents/Notes/Repos", filename = "global_note.md", command_name = "GlobalNote", window_config = function() local window_height = vim.api.nvim_list_uis()[1].height local window_width = vim.api.nvim_list_uis()[1].width return { relative = "editor", border = require("globals").border_chars, title = "Note", title_pos = "center", width = math.floor(0.7 * window_width), height = math.floor(0.85 * window_height), row = math.floor(0.05 * window_height), col = math.floor(0.15 * window_width), } end, additional_presets = { project = { title = "Project Note", command_name = "ProjectNote", filename = function() local repo = vim.system({ "git", "rev-parse", "--show-toplevel", }, { text = true, }):wait() if repo.stderr ~= "" then vim.notify(repo.stderr, vim.log.levels.WARN) return nil end local project_name = vim.fs.basename(repo.stdout:gsub("\n", "")) if project_name == nil then vim.notify("Unable to get project name ", vim.log.levels.WARN) return nil end return project_name .. ".md" end, }, file = { title = "File Note", command_name = "FileNote", directory = vim.fn.getcwd, filename = "notes.md", }, }, }) end }, { "moll/vim-bbye", keys = { { "bd", "Bdelete", desc = "Delete current buffer" }, { "bD", "Bwipeout", desc = "Delete all buffers" }, { "bc", desc = "Clean buffers" }, -- TODO: Implement the thing }, }, { "stevearc/oil.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, keys = { { "e", "Oil", desc = "File Explorer" }, { "E", "Oil ./", desc = "CWD Explorer" }, }, opts = {}, }, { "ThePrimeagen/harpoon", branch = "harpoon2", requires = { "nvim-lua/plenary.nvim" }, keys = { { "za", desc = "Add buffer to harpoon" }, { "zs", desc = "Seek harpoon buffers" }, { "zd", desc = "Remove buffer from harpoon" }, { "zx", desc = "Previous harpoon buffer" }, { "zc", desc = "Next harpoon buffer" }, { "1" }, { "2" }, { "3" }, { "4" }, }, config = function() local harpoon = require("harpoon") harpoon:setup({ settings = { save_on_ui_close = true, save_on_toggle = true }, }) vim.keymap.set("n", "za", function() harpoon:list():add() end) vim.keymap.set("n", "zs", function() harpoon.ui:toggle_quick_menu(harpoon:list(), { border = require("globals").border_chars, title = " Buffers ", title_pos = "center", }) end) vim.keymap.set("n", "zd", function() harpoon:list():remove() end) vim.keymap.set("n", "zx", function() harpoon:list():prev() end) vim.keymap.set("n", "zc", function() harpoon:list():next() end) local keys = "1234567890" for i = 1, #keys do local key = keys:sub(i, i) vim.keymap.set("n", string.format("%s", key), function() harpoon:list():select(i) end) end harpoon:extend({ UI_CREATE = function(cx) for i = 1, #keys do local key = keys:sub(i, i) vim.keymap.set("n", key, function() harpoon:list():select(i) end, { buffer = cx.bufnr }) end vim.keymap.set("n", "", function() harpoon.ui:select_menu_item({ vsplit = true }) end, { buffer = cx.bufnr }) vim.keymap.set("n", "", function() harpoon.ui:select_menu_item({ split = true }) end, { buffer = cx.bufnr }) end, }) end, } }