diff --git a/nvim/lua/config/keymaps.lua b/nvim/lua/config/keymaps.lua index 42c705a..2195b15 100644 --- a/nvim/lua/config/keymaps.lua +++ b/nvim/lua/config/keymaps.lua @@ -32,21 +32,35 @@ map("n", "dt", ':lua require("dapui").toggle() :lua require("dap").c map("n", "dq", ':lua require("dap").close() :lua require("dapui").toggle()', { desc = "Close DAP" }) -- file tree -map("n", "", function() require('nvim-tree.api').tree.toggle()end, opts) +map("n", "", function() + require("nvim-tree.api").tree.toggle() +end, opts) -- toggle terminal -map("n", "", function() require('toggleterm').toggle(1)end, {desc = "Toggle Terminal"}) +map("n", "", function() + require("toggleterm").toggle(1) +end, { desc = "Toggle Terminal" }) -- tab switching map("n", "", ":BufferLineCyclePrev", opts) map("n", "", ":BufferLineCycleNext", opts) -- git -map("n", "gq", function() require('telescope.builtin').git_commits()end, { desc = "Commits" }) -map("n", "gw", function() require('telescope.builtin').git_bcommits()end, { desc = "Commits in branch" }) -map("n", "ge", function() require('telescope.builtin').git_branches()end, { desc = "Branches" }) -map("n", "gr", function() require('telescope.builtin').git_status()end, { desc = "Git status" }) -map("n", "ga", function() require('telescope.builtin').git_stash()end, { desc = "Git stash" }) +map("n", "gq", function() + require("telescope.builtin").git_commits() +end, { desc = "Commits" }) +map("n", "gw", function() + require("telescope.builtin").git_bcommits() +end, { desc = "Commits in branch" }) +map("n", "ge", function() + require("telescope.builtin").git_branches() +end, { desc = "Branches" }) +map("n", "gr", function() + require("telescope.builtin").git_status() +end, { desc = "Git status" }) +map("n", "ga", function() + require("telescope.builtin").git_stash() +end, { desc = "Git stash" }) map("n", "gg", function() Util.float_term({ "gitui" }, { cwd = Util.get_root() }) end, { desc = "gitui (root dir)" }) @@ -61,8 +75,12 @@ function _G.set_terminal_maps() vim.keymap.set("t", "jk", [[]], opts) vim.keymap.set("t", "", [[wincmd h]], opts) vim.keymap.set("t", "", [[wincmd j]], opts) - vim.keymap.set("n", "", function() require('toggleterm').toggle(1)end, opts) - vim.keymap.set("i", "", function() require('toggleterm').toggle(1)end, opts) + vim.keymap.set("n", "", function() + require("toggleterm").toggle(1) + end, opts) + vim.keymap.set("i", "", function() + require("toggleterm").toggle(1) + end, opts) end -- if you only want these mappings for toggle term use term://*toggleterm#* instead @@ -73,11 +91,21 @@ map("n", "", ":wincmd k", opts) map("n", "", ":wincmd l", opts) -- harpoon man -map("n", "h1", function() require('harpoon.ui').nav_file(1)end, { desc = "First Harpoon File" }) -map("n", "h2", function() require('harpoon.ui').nav_file(2)end, { desc = "Second Harpoon File" }) -map("n", "h3", function() require('harpoon.ui').nav_file(3)end, { desc = "First Harpoon File" }) -map("n", "ha", function() require('harpoon.mark').add_file()end, { desc = "First Harpoon File" }) -map("n", "hd", function() require('harpoon.mark').remove_file()end, { desc = "First Harpoon File" }) +map("n", "h1", function() + require("harpoon.ui").nav_file(1) +end, { desc = "First Harpoon File" }) +map("n", "h2", function() + require("harpoon.ui").nav_file(2) +end, { desc = "Second Harpoon File" }) +map("n", "h3", function() + require("harpoon.ui").nav_file(3) +end, { desc = "First Harpoon File" }) +map("n", "ha", function() + require("harpoon.mark").add_file() +end, { desc = "First Harpoon File" }) +map("n", "hd", function() + require("harpoon.mark").remove_file() +end, { desc = "First Harpoon File" }) map("n", "hm", ":Telescope harpoon marks", { noremap = true, silent = true, desc = "Show harpoon marks" }) -- telescope @@ -88,15 +116,20 @@ map("n", "ff", function() require("telescope.builtin").find_files() end, { desc = "Find Files" }) map("n", "fg", function() + live_grep_from_project_git_root() +end, { desc = "Live Grep (root)" }) +map("n", "fG", function() require("telescope.builtin").live_grep() -end, { desc = "Live Grep" }) +end, { desc = "Live Grep (cwd)" }) map("n", "fh", function() require("telescope.builtin").help_tags() end, { desc = "Help" }) map("n", "fp", function() require("telescope").extensions.project.project({}) end, { noremap = true, silent = true, desc = "Projects" }) -map("n", "z", function() require('telescope').extensions.zoxide.list{}end, { desc = "Zoxide" }) +map("n", "z", function() + require("telescope").extensions.zoxide.list({}) +end, { desc = "Zoxide" }) -- trouble map("n", "t", "TroubleToggle", term_opts) @@ -133,3 +166,26 @@ end) -- neovide paste vim.g.neovide_input_use_logo = 1 vim.api.nvim_set_keymap("i", "", "pI", { noremap = true, silent = true }) + +function live_grep_from_project_git_root() + local function is_git_repo() + vim.fn.system("git rev-parse --is-inside-work-tree") + + return vim.v.shell_error == 0 + end + + local function get_git_root() + local dot_git_path = vim.fn.finddir(".git", ".;") + return vim.fn.fnamemodify(dot_git_path, ":h") + end + + local opts = {} + + if is_git_repo() then + opts = { + cwd = get_git_root(), + } + end + + require("telescope.builtin").live_grep(opts) +end