local telescope_plugins = { "project.nvim", "telescope.nvim", "telescope-fzf-native.nvim", "telescope-ui-select.nvim", } local function load_telescope() require("lz.n").trigger_load(telescope_plugins) return require("telescope.builtin") end local function map_picker(lhs, picker, desc, opts) vim.keymap.set("n", lhs, function() load_telescope()[picker](opts or {}) end, { desc = desc }) end map_picker("sh", "help_tags", "[S]earch [H]elp") map_picker("sk", "keymaps", "[S]earch [K]eymaps") map_picker("sf", "find_files", "[S]earch [F]iles") map_picker("ss", "builtin", "[S]earch [S]elect Telescope") map_picker("sw", "grep_string", "[S]earch current [W]ord") map_picker("sg", "live_grep", "[S]earch by [G]rep") map_picker("sd", "diagnostics", "[S]earch [D]iagnostics") map_picker("sr", "resume", "[S]earch [R]esume") map_picker("s.", "oldfiles", '[S]earch Recent Files ("." for repeat)') map_picker("", "buffers", "[ ] Find existing buffers") map_picker("sn", "find_files", "[S]earch [N]eovim files", { cwd = vim.fn.stdpath("config") }) vim.keymap.set("n", "sp", function() load_telescope() require("telescope").extensions.projects.projects({}) end, { desc = "[S]earch [P]rojects" }) vim.keymap.set("n", "/", function() local builtin = load_telescope() builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ winblend = 10, previewer = false, })) end, { desc = "[/] Fuzzily search in current buffer" }) vim.keymap.set("n", "s/", function() load_telescope().live_grep({ grep_open_files = true, prompt_title = "Live Grep in Open Files", }) end, { desc = "[S]earch [/] in Open Files" }) require("lz.n").load({ { "project.nvim", event = "VimEnter", after = function() require("project").setup({ manual_mode = false, lsp = { enabled = true }, patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json", "flake.nix" }, show_hidden = true, scope_chdir = "global", }) end, }, { "telescope-fzf-native.nvim", }, { "telescope-ui-select.nvim", }, { "telescope.nvim", cmd = "Telescope", before = function() require("lz.n").trigger_load("project.nvim") end, after = function() local actions = require("telescope.actions") require("telescope").setup({ defaults = { path_display = { "truncate" }, border = true, borderchars = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, layout_strategy = "horizontal", layout_config = { prompt_position = "top", }, sorting_strategy = "ascending", mappings = { i = { [""] = actions.move_selection_previous, [""] = actions.move_selection_next, [""] = actions.send_selected_to_qflist + actions.open_qflist, }, }, }, extensions = { ["ui-select"] = { require("telescope.themes").get_dropdown(), }, }, }) require("lz.n").trigger_load({ "telescope-fzf-native.nvim", "telescope-ui-select.nvim" }) pcall(require("telescope").load_extension, "projects") pcall(require("telescope").load_extension, "fzf") pcall(require("telescope").load_extension, "ui-select") end, }, })