local M = { "nvim-telescope/telescope.nvim", dependencies = { { "nvim-telescope/telescope-fzf-native.nvim", build = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release", }, { "nvim-telescope/telescope-ui-select.nvim" }, { "nvim-treesitter/nvim-treesitter" }, { "folke/trouble.nvim" }, }, keys = { { "ff", "lua require('telescope.builtin').find_files()", desc = "Find files" }, { "fa", "Telescope find_files hidden=true", desc = "Find files" }, { "fr", "lua require('telescope.builtin').oldfiles()", desc = "Find files" }, { "", "lua require('telescope.builtin').commands()" }, { "", "lua require('telescope.builtin').builtin(require('telescope.themes').get_dropdown({}))", }, { "fg", "lua require('telescope.builtin').live_grep()", desc = "Find word" }, { "fb", "lua require('telescope.builtin').buffers()", desc = "Find buffer" }, }, cmd = { "Telescope", "Tel" }, opts = function() local actions = require("telescope.actions") local open_with_trouble = require("trouble.sources.telescope").open return { pickers = { find_files = { previewer = false, -- path_display = formattedName, layout_config = { height = 0.4, prompt_position = "top", preview_cutoff = 120, }, }, git_files = { previewer = false, -- path_display = formattedName, layout_config = { height = 0.4, prompt_position = "top", preview_cutoff = 120, }, }, buffers = { mappings = { i = { [""] = actions.delete_buffer, }, n = { [""] = actions.delete_buffer, }, }, previewer = false, initial_mode = "normal", -- theme = "dropdown", layout_config = { height = 0.4, width = 0.6, prompt_position = "top", preview_cutoff = 120, }, }, current_buffer_fuzzy_find = { previewer = true, layout_config = { prompt_position = "top", preview_cutoff = 120, }, }, live_grep = { only_sort_text = true, previewer = true, }, grep_string = { only_sort_text = true, previewer = true, }, lsp_references = { show_line = false, previewer = true, }, treesitter = { show_line = false, previewer = true, }, colorscheme = { enable_preview = true, }, }, defaults = { mappings = { i = { [""] = actions.close, [""] = open_with_trouble, }, n = { [""] = open_with_trouble }, }, vimgrep_arguments = { "rg", "-L", "--color=never", "--no-heading", "--with-filename", "--line-number", "--column", "--smart-case", }, file_ignore_patterns = { "%.jpg", "%.jpeg", "%.webp", "%.png", "%.gif", "%.otf", "%.ttf", "pnpm%-lock%.yaml", "lazy%-lock%.json", "yarn%.lock", "flake%.lock", "/node_modules/", "/dist/", "/%.direnv/", "/build/", }, prompt_prefix = "  ", selection_caret = " ", entry_prefix = " ", initial_mode = "insert", selection_strategy = "reset", layout_strategy = "horizontal", }, extensions = { fzf = { fuzzy = true, -- false will only do exact matching override_generic_sorter = true, -- override the generic sorter override_file_sorter = true, -- override the file sorter case_mode = "smart_case", -- or "ignore_case" or "respect_case" }, ["ui-select"] = { require("telescope.themes").get_dropdown({ previewer = false, initial_mode = "normal", sorting_strategy = "ascending", layout_strategy = "horizontal", layout_config = { horizontal = { width = 0.5, height = 0.4, preview_width = 0.6, }, }, }), }, }, } end, config = function(_, opts) local telescope = require("telescope") telescope.setup(opts) telescope.load_extension("fzf") telescope.load_extension("ui-select") end, } return M