73 lines
2.4 KiB
Lua
73 lines
2.4 KiB
Lua
local wk = require("which-key")
|
|
local builtin = require('telescope.builtin')
|
|
|
|
local Terminal = require('toggleterm.terminal').Terminal
|
|
local lazygit = Terminal:new({
|
|
cmd = "lazygit",
|
|
dir = "git_dir",
|
|
direction = "float",
|
|
float_opts = {
|
|
border = "double",
|
|
},
|
|
-- function to run on opening the terminal
|
|
on_open = function(term)
|
|
vim.cmd("startinsert!")
|
|
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", {noremap = true, silent = true})
|
|
end,
|
|
})
|
|
|
|
function _lazygit_toggle()
|
|
lazygit:toggle()
|
|
end
|
|
|
|
wk.add({
|
|
{"<leader>g", "<cmd>lua _lazygit_toggle()<CR>", desc = "Toggle LazyGit"},
|
|
|
|
-- Essentials
|
|
{ "<leader>w", "<cmd>w<cr>", desc = "Save File" },
|
|
{ "<leader>q", "<cmd>q<cr>", desc = "Quit" },
|
|
{ "<leader>e", "<cmd>NvimTreeToggle<cr>", desc = "Toggle Explorer (Tree)" },
|
|
|
|
-- Navigation / Buffers
|
|
{ "<leader>[", "<cmd>bprevious<cr>", desc = "Prev Buffer" },
|
|
{ "<leader>]", "<cmd>bnext<cr>", desc = "Next Buffer" },
|
|
{ "<leader>b", builtin.buffers, desc = "List Buffers (Telescope)" },
|
|
{ "<leader>x", "<cmd>bdelete<cr>", desc = "Close Buffer" },
|
|
|
|
-- File Group
|
|
{ "<leader>f", group = "File" },
|
|
{ "<leader>fn", function()
|
|
local name = vim.fn.input("New file/dir: ")
|
|
if name == "" then return end
|
|
if name:sub(-1) == "/" then
|
|
vim.fn.mkdir(name, "p")
|
|
else
|
|
local dir = vim.fn.fnamemodify(name, ":h")
|
|
if vim.fn.isdirectory(dir) == 0 then vim.fn.mkdir(dir, "p") end
|
|
vim.cmd("edit " .. name)
|
|
end
|
|
end, desc = "New File/Dir" },
|
|
|
|
{ "<leader>fd", function()
|
|
local current_file = vim.api.nvim_buf_get_name(0)
|
|
if current_file == "" then return end
|
|
if vim.fn.confirm("Delete " .. current_file .. "?", "&Yes\n&No", 2) == 1 then
|
|
os.remove(current_file)
|
|
vim.api.nvim_buf_delete(0, { force = true })
|
|
end
|
|
end, desc = "Delete Current File" },
|
|
|
|
-- Search Group
|
|
{ "<leader>s", group = "Search" },
|
|
{ "<leader>sf", builtin.find_files, desc = "Files" },
|
|
{ "<leader>sw", builtin.live_grep, desc = "Word (Global)" },
|
|
|
|
-- Symbol Searching
|
|
{ "<leader>ss", builtin.lsp_dynamic_workspace_symbols, desc = "Workspace Symbols" },
|
|
{ "<leader>sl", builtin.lsp_document_symbols, desc = "Document Symbols (Current File)" },
|
|
|
|
-- LSP
|
|
{ "<leader>d", vim.lsp.buf.definition, desc = "Go to Definition" },
|
|
{ "<leader>e", vim.lsp.buf.hover, desc = "Hover Documentation" },
|
|
})
|