Files
nixfiles/home/apps/nvim/lua/plugins/misc.lua
2025-12-17 21:43:32 +05:00

176 lines
5.0 KiB
Lua

return {
{
"akinsho/toggleterm.nvim",
keys = {
{ "<C-Space>", desc = "Toggle Terminal" },
{ "<leader>mr", "<cmd>TermExec cmd=\"make run\"<cr>", desc = "Make (run)" },
{ "<leader>mb", "<cmd>TermExec cmd=\"make build\"<cr>", desc = "Make (build)" },
{ "<leader>mc", "<cmd>TermExec cmd=\"make clean\"<cr>", desc = "Make (clean)" },
{ "<leader>mt", "<cmd>TermExec cmd=\"make test\"<cr>", desc = "Make (test)" },
},
opts = {
autochdir = true,
open_mapping = "<C-Space>",
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", "<leader>x", winpad.toggle, { desc = "Toggle Window Padding" })
end
},
{
"backdround/global-note.nvim",
keys = {
{ "<leader>nn", "<cmd>ProjectNote<cr>", desc = "Project Note" },
{ "<leader>nf", "<cmd>FileNote<cr>", desc = "File Note" },
{ "<leader>N", "<cmd>GlobalNote<cr>", 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 = {
{ "<leader>bd", "<cmd>Bdelete<cr>", desc = "Delete current buffer" },
{ "<leader>bD", "<cmd>Bwipeout<cr>", desc = "Delete all buffers" },
{ "<leader>bc", desc = "Clean buffers" }, -- TODO: Implement the thing
},
},
{
"stevearc/oil.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
keys = {
{ "<leader>e", "<cmd>Oil<cr>", desc = "File Explorer" },
{ "<leader>E", "<cmd>Oil ./<cr>", desc = "CWD Explorer" },
},
opts = {},
},
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
requires = { "nvim-lua/plenary.nvim" },
keys = {
{ "<leader>za", desc = "Add buffer to harpoon" },
{ "<leader>zs", desc = "Seek harpoon buffers" },
{ "<leader>zd", desc = "Remove buffer from harpoon" },
{ "<leader>zx", desc = "Previous harpoon buffer" },
{ "<leader>zc", desc = "Next harpoon buffer" },
{ "<leader>1" },
{ "<leader>2" },
{ "<leader>3" },
{ "<leader>4" },
},
config = function()
local harpoon = require("harpoon")
harpoon:setup({
settings = { save_on_ui_close = true, save_on_toggle = true },
})
vim.keymap.set("n", "<leader>za", function() harpoon:list():add() end)
vim.keymap.set("n", "<leader>zs",
function()
harpoon.ui:toggle_quick_menu(harpoon:list(), {
border = require("globals").border_chars,
title = " Buffers ",
title_pos = "center",
})
end)
vim.keymap.set("n", "<leader>zd", function() harpoon:list():remove() end)
vim.keymap.set("n", "<leader>zx", function() harpoon:list():prev() end)
vim.keymap.set("n", "<leader>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("<leader>%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", "<C-v>", function()
harpoon.ui:select_menu_item({ vsplit = true })
end, { buffer = cx.bufnr })
vim.keymap.set("n", "<C-s>", function()
harpoon.ui:select_menu_item({ split = true })
end, { buffer = cx.bufnr })
end,
})
end,
}
}