local telescope = require("telescope") local actions = require("telescope.actions") local themes = require("telescope.themes") local config = require("telescope.config") local builtin = require("telescope.builtin") local state = require("telescope.state") -- Clone the default Telescope configuration local vimgrep_arguments = { unpack(config.values.vimgrep_arguments) } table.insert(vimgrep_arguments, "--hidden") -- search hidden table.insert(vimgrep_arguments, "--glob") -- ignore git table.insert(vimgrep_arguments, "!**/.git/*") telescope.setup { -- Workaround -- https://github.com/nvim-telescope/telescope.nvim/issues/938#issuecomment-877539724 defaults = themes.get_ivy { vimgrep_arguments = vimgrep_arguments, mappings = { n = { [""] = actions.close, ["r"] = actions.to_fuzzy_refine, ["j"] = actions.move_selection_next, ["k"] = actions.move_selection_previous, }, i = { [""] = actions.cycle_history_prev, [""] = actions.cycle_history_next, }, }, layout_config = { height = 0.5 }, borderchars = { "", "", "", "│", "", "", "", "" }, }, pickers = { find_files = { find_command = { "rg", "--files", "--hidden", "--glob", "!**/.git/*" }, }, current_buffer_fuzzy_find = { mappings = { n = { ["n"] = actions.move_selection_next, ["N"] = actions.move_selection_previous, }, }, }, lsp_references = { layout_config = { height = 0.7 }, initial_mode = "normal", }, live_grep = { layout_config = { height = 0.7 }, }, buffers = { initial_mode = "normal", }, resume = { initial_mode = "normal", }, }, } -- Enable telescope fzf native, if installed pcall(require("telescope").load_extension, "fzf") local function find_undercursor_in_buffer() builtin["current_buffer_fuzzy_find"] { layout_config = { height = 0.8 }, -- Already have word, no need to think default_text = vim.fn.expand(""), initial_mode = "normal", } end local function grep_undercursor() builtin["live_grep"] { layout_config = { height = 0.8 }, -- Already have word, no need to think default_text = vim.fn.expand(""), initial_mode = "normal", } end -- Better than builtin / vim.keymap.set("n", "/", builtin["current_buffer_fuzzy_find"]) vim.keymap.set("n", "w", find_undercursor_in_buffer) vim.keymap.set("n", "W", grep_undercursor) -- Use / as prefix to avoid collision in bindings vim.keymap.set("n", "/f", builtin["find_files"]) vim.keymap.set("n", "/?", builtin["help_tags"]) vim.keymap.set("n", "/g", builtin["live_grep"]) vim.keymap.set("n", "/d", builtin["diagnostics"]) vim.keymap.set("n", "/b", builtin["buffers"]) vim.keymap.set("n", "/p", builtin["spell_suggest"]) -- for GHC -- grep -> refine for `.hs:` files