- opts = function()
- local actions = require("telescope.actions")
-
- local open_with_trouble = function(...)
- return require("trouble.sources.telescope").open(...)
- end
- local find_files_no_ignore = function()
- local action_state = require("telescope.actions.state")
- local line = action_state.get_current_line()
- LazyVim.pick("find_files", { no_ignore = true, default_text = line })()
- end
- local find_files_with_hidden = function()
- local action_state = require("telescope.actions.state")
- local line = action_state.get_current_line()
- LazyVim.pick("find_files", { hidden = true, default_text = line })()
- end
-
- local function find_command()
- if 1 == vim.fn.executable("rg") then
- return { "rg", "--files", "--color", "never", "-g", "!.git" }
- elseif 1 == vim.fn.executable("fd") then
- return { "fd", "--type", "f", "--color", "never", "-E", ".git" }
- elseif 1 == vim.fn.executable("fdfind") then
- return { "fdfind", "--type", "f", "--color", "never", "-E", ".git" }
- elseif 1 == vim.fn.executable("find") and vim.fn.has("win32") == 0 then
- return { "find", ".", "-type", "f" }
- elseif 1 == vim.fn.executable("where") then
- return { "where", "/r", ".", "*" }
- end
- end
-
- return {
- defaults = {
- prompt_prefix = " ",
- selection_caret = " ",
- -- open files in the first window that is an actual file.
- -- use the current window if no other window is available.
- get_selection_window = function()
- local wins = vim.api.nvim_list_wins()
- table.insert(wins, 1, vim.api.nvim_get_current_win())
- for _, win in ipairs(wins) do
- local buf = vim.api.nvim_win_get_buf(win)
- if vim.bo[buf].buftype == "" then
- return win
- end
- end
- return 0
- end,
- mappings = {
- i = {
- ["<c-t>"] = open_with_trouble,
- ["<a-t>"] = open_with_trouble,
- ["<a-i>"] = find_files_no_ignore,
- ["<a-h>"] = find_files_with_hidden,
- ["<C-Down>"] = actions.cycle_history_next,
- ["<C-Up>"] = actions.cycle_history_prev,
- ["<C-f>"] = actions.preview_scrolling_down,
- ["<C-b>"] = actions.preview_scrolling_up,
- },
- n = {
- ["q"] = actions.close,
- },
- },
- },
- pickers = {
- find_files = {
- find_command = find_command,
- hidden = true,
- },
- },
- }
- end,
- },
-
- -- Flash Telescope config
- {
- "nvim-telescope/telescope.nvim",
- optional = true,
- opts = function(_, opts)
- if not LazyVim.has("flash.nvim") then
- return
- end
- local function flash(prompt_bufnr)
- require("flash").jump({
- pattern = "^",
- label = { after = { 0, 0 } },
- search = {
- mode = "search",
- exclude = {
- function(win)
- return vim.bo[vim.api.nvim_win_get_buf(win)].filetype ~= "TelescopeResults"
- end,
- },
- },
- action = function(match)
- local picker = require("telescope.actions.state").get_current_picker(prompt_bufnr)
- picker:set_selection(match.pos[1] - 1)
- end,
- })
- end
- opts.defaults = vim.tbl_deep_extend("force", opts.defaults or {}, {
- mappings = { n = { s = flash }, i = { ["<c-s>"] = flash } },
- })
- end,
- },
-
- -- better vim.ui with telescope
- {
- "stevearc/dressing.nvim",
- lazy = true,
- enabled = function()
- return LazyVim.pick.want() == "telescope"
- end,
- init = function()
- ---@diagnostic disable-next-line: duplicate-set-field
- vim.ui.select = function(...)
- require("lazy").load({ plugins = { "dressing.nvim" } })
- return vim.ui.select(...)
- end
- ---@diagnostic disable-next-line: duplicate-set-field
- vim.ui.input = function(...)
- require("lazy").load({ plugins = { "dressing.nvim" } })
- return vim.ui.input(...)
- end
- end,