From a82cb3d8a593511552968a7210b2d4a04db4d75d Mon Sep 17 00:00:00 2001 From: jc <46619361+juancwu@users.noreply.github.com> Date: Tue, 14 Jan 2025 20:47:40 -0500 Subject: [PATCH] (nvim) reconfigure telescope better now --- nvim/lazy-lock.json | 4 +- nvim/lua/juancwu/plugins/telescope.lua | 259 ++++++++++++++----------- 2 files changed, 146 insertions(+), 117 deletions(-) diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index c9927b9..f64a3ce 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -4,8 +4,6 @@ "catppuccin": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" }, "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, "conform.nvim": { "branch": "master", "commit": "70019124aa4f2e6838be9fbd2007f6d13b27a96d" }, - "fzf": { "branch": "master", "commit": "56fef7c8df2713261fbdbd396aa81ed23d9a945a" }, - "fzf-lua": { "branch": "main", "commit": "6f7249741168c0751356e3b6c5c1e3bade833b6b" }, "git.nvim": { "branch": "main", "commit": "164daed4eff61bd6bee6f1c97cb78144b9374022" }, "gitsigns.nvim": { "branch": "main", "commit": "76d88f3b584e1f83b2aa51663a32cc6ee8d97eff" }, "harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" }, @@ -36,7 +34,7 @@ "telescope-file-browser.nvim": { "branch": "master", "commit": "626998e5c1b71c130d8bc6cf7abb6709b98287bb" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "dae2eac9d91464448b584c7949a31df8faefec56" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" }, + "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, "tokyonight.nvim": { "branch": "main", "commit": "775f82f08a3d1fb55a37fc6d3a4ab10cd7ed8a10" }, "undotree": { "branch": "master", "commit": "2556c6800b210b2096b55b66e74b4cc1d9ebbe4f" }, diff --git a/nvim/lua/juancwu/plugins/telescope.lua b/nvim/lua/juancwu/plugins/telescope.lua index 9521ba5..0af54aa 100644 --- a/nvim/lua/juancwu/plugins/telescope.lua +++ b/nvim/lua/juancwu/plugins/telescope.lua @@ -1,7 +1,7 @@ return { - "nvim-telescope/telescope.nvim", - version = "0.1.2", - dependencies = { + "nvim-telescope/telescope.nvim", + version = "0.1.8", + dependencies = { "nvim-lua/plenary.nvim", { 'nvim-telescope/telescope-fzf-native.nvim', @@ -12,124 +12,155 @@ return { end, }, { - "nvim-telescope/telescope-file-browser.nvim", - dependencies = { - "nvim-telescope/telescope.nvim", - "nvim-lua/plenary.nvim", - }, - enabled = true, + "nvim-telescope/telescope-file-browser.nvim", + dependencies = { + "nvim-telescope/telescope.nvim", + "nvim-lua/plenary.nvim", + }, + enabled = true, }, - { 'nvim-telescope/telescope-ui-select.nvim'}, - { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font }, + { 'nvim-telescope/telescope-ui-select.nvim' }, + { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font }, }, - config = function() - local telescope = require("telescope") - local actions = require("telescope.actions") - local builtin = require("telescope.builtin") - local fb_actions = require("telescope").extensions.file_browser.actions + config = function() + local telescope = require("telescope") + local actions = require("telescope.actions") + local builtin = require("telescope.builtin") + local fb_actions = require("telescope").extensions.file_browser.actions - local function telescope_buffer_dir() - return vim.fn.expand("%:p:h") - end + local function telescope_buffer_dir() + return vim.fn.expand("%:p:h") + end - telescope.setup({ - defaults = { - mappings = { - n = { - ["q"] = actions.close, - }, - }, - }, - extensions = { - file_browser = { - theme = "dropdown", - hijack_netrw = false, - hidden = true, - mappings = { - ["i"] = { - [""] = function() - vim.cmd("normal vbd") - end, - [""] = function(bufnr) - actions.move_selection_next(bufnr) - end, - [""] = function(bufnr) - actions.move_selection_previous(bufnr) - end, - [""] = function(bufnr) - actions.select_vertical(bufnr) - end, - }, - ["n"] = { - ["a"] = fb_actions.create, - ["h"] = fb_actions.goto_parent_dir, - ["/"] = function() - vim.cmd("startinsert") - end, - ["d"] = fb_actions.remove, - ["e"] = fb_actions.change_cwd, - [""] = function(bufnr) - actions.select_vertical(bufnr) - end, - [""] = function(bufnr) - actions.toggle_all(bufnr) - end, - [""] = function(bufnr) - actions.move_selection_next(bufnr) - end, - [""] = function(bufnr) - actions.move_selection_previous(bufnr) - end, - }, - }, - }, - }, - }) + telescope.setup({ + defaults = { + mappings = { + n = { + ["q"] = actions.close, + }, + }, + }, + extensions = { + ['ui-select'] = { + require('telescope.themes').get_dropdown(), + }, + file_browser = { + theme = "dropdown", + hijack_netrw = false, + hidden = true, + mappings = { + ["i"] = { + [""] = function() + vim.cmd("normal vbd") + end, + [""] = function(bufnr) + actions.move_selection_next(bufnr) + end, + [""] = function(bufnr) + actions.move_selection_previous(bufnr) + end, + [""] = function(bufnr) + actions.select_vertical(bufnr) + end, + }, + ["n"] = { + ["a"] = fb_actions.create, + ["h"] = fb_actions.goto_parent_dir, + ["/"] = function() + vim.cmd("startinsert") + end, + ["d"] = fb_actions.remove, + ["e"] = fb_actions.change_cwd, + [""] = function(bufnr) + actions.select_vertical(bufnr) + end, + [""] = function(bufnr) + actions.toggle_all(bufnr) + end, + [""] = function(bufnr) + actions.move_selection_next(bufnr) + end, + [""] = function(bufnr) + actions.move_selection_previous(bufnr) + end, + }, + }, + }, + }, + }) - pcall(telescope.load_extension, "file_browser") - pcall(telescope.load_extension, "fzf") - pcall(telescope.load_extension, "dap") + pcall(telescope.load_extension, "file_browser") + pcall(telescope.load_extension, "fzf") + pcall(telescope.load_extension, "ui-select") - -- Builtin pickers - vim.keymap.set("n", "sf", function() - builtin.find_files({ no_ignore = false, hidden = true }) - end, { desc = "[S]earch [F]iles" }) - vim.keymap.set("n", "sh", builtin.help_tags, { desc = "[S]earch [H]elp Tags" }) - vim.keymap.set("n", "sb", builtin.buffers, { desc = "[S]earch [B]uffers" }) - vim.keymap.set("n", "sw", builtin.grep_string, { desc = "[S]earch [W]ord" }) - vim.keymap.set("n", "sg", builtin.live_grep, { desc = "[S]earch by [G]rep" }) - vim.keymap.set("n", "sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" }) - vim.keymap.set("n", "gr", builtin.lsp_references, { desc = "[G]o to [R]eferences", noremap = true }) - vim.keymap.set("n", "gd", builtin.lsp_definitions, { desc = "[G]o to [D]efinitions" }) - vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { desc = "[G]o to [D]eclaration" }) - vim.keymap.set("n", "rn", vim.lsp.buf.rename, { desc = "[R]e[N]ame" }) + -- Builtin pickers + vim.keymap.set("n", "sf", function() + builtin.find_files({ + hidden = true, + file_ignore_patterns = { + "node%_modules/.*", + "%.git/.*", + }, + find_command = { + "fd", + "--type", + "f", + "--color", + "never", + "--hidden", + "--no-ignore", + }, + }) + end, { desc = "[S]earch [F]iles" }) + vim.keymap.set("n", "sh", builtin.help_tags, { desc = "[S]earch [H]elp Tags" }) + vim.keymap.set("n", "sb", builtin.buffers, { desc = "[S]earch [B]uffers" }) + vim.keymap.set("n", "sw", builtin.grep_string, { desc = "[S]earch current [W]ord" }) + vim.keymap.set("n", "sg", builtin.live_grep, { desc = "[S]earch by [G]rep" }) + vim.keymap.set("n", "sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" }) + vim.keymap.set("n", "gr", builtin.lsp_references, { desc = "[G]o to [R]eferences", noremap = true }) + vim.keymap.set("n", "gd", builtin.lsp_definitions, { desc = "[G]o to [D]efinitions" }) + vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { desc = "[G]o to [D]eclaration" }) + vim.keymap.set("n", "rn", vim.lsp.buf.rename, { desc = "[R]e[N]ame" }) - -- Git pickers - vim.keymap.set("n", "gf", builtin.git_files, { desc = "Search [G]it [F]iles" }) - vim.keymap.set("n", "gs", builtin.git_status, { desc = "List [G]it [S]tatus" }) - vim.keymap.set("n", "gh", builtin.git_stash, { desc = "List [G]it [S]tash" }) - vim.keymap.set("n", "gbb", builtin.git_branches, { desc = "List [G]it [B]ranches" }) - vim.keymap.set("n", "gc", builtin.git_bcommits, { desc = "List Buffer [G]it [C]ommits" }) + -- Git pickers + vim.keymap.set("n", "gf", builtin.git_files, { desc = "Search [G]it [F]iles" }) + vim.keymap.set("n", "gs", builtin.git_status, { desc = "List [G]it [S]tatus" }) + vim.keymap.set("n", "gh", builtin.git_stash, { desc = "List [G]it [S]tash" }) + vim.keymap.set("n", "gbb", builtin.git_branches, { desc = "List [G]it [B]ranches" }) + vim.keymap.set("n", "gc", builtin.git_bcommits, { desc = "List Buffer [G]it [C]ommits" }) - -- File Browser Ext - vim.keymap.set("n", "fs", function() - telescope.extensions.file_browser.file_browser({ - path = "%:p:h", - cwd = telescope_buffer_dir(), - respect_gitignore = false, - hidden = true, - grouped = true, - previewer = false, - initial_mode = "normal", - layout_config = { height = 40 }, - }) - end, { desc = "Open [F]ile [S]ystem Menu" }) + -- File Browser Ext + vim.keymap.set("n", "fs", function() + telescope.extensions.file_browser.file_browser({ + path = "%:p:h", + cwd = telescope_buffer_dir(), + respect_gitignore = false, + hidden = true, + grouped = true, + previewer = false, + initial_mode = "normal", + layout_config = { height = 40 }, + }) + end, { desc = "Open [F]ile [S]ystem Menu" }) - vim.keymap.set("n", "/", function() - builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ - winblend = 10, - previewer = false, - })) - end, { desc = "[/] Fuzzily serach in current buffer" }) - end, + vim.keymap.set("n", "/", function() + builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ + winblend = 10, + previewer = false, + })) + end, { desc = "[/] Fuzzily serach in current buffer" }) + + -- live grep in open files only + vim.keymap.set("n", "s/", function() + builtin.live_grep { + grep_open_files = true, + prompt_title = "Live Grep in Open Files", + } + end, { desc = "[S]search [/] in Open Files" }) + + -- shortcut for searching neovim config files + vim.keymap.set("n", "sn", function() + builtin.find_files { cwd = vim.fn.stdpath 'config' } + end, { desc = "[S]earch [N]eovim files" }) + end, }