| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 | local M = {}local pickers = {  find_files = {    theme = "dropdown",    hidden = true,    previewer = false,  },  live_grep = {    --@usage don't include the filename in the search results    only_sort_text = true,    theme = "dropdown",  },  grep_string = {    only_sort_text = true,    theme = "dropdown",  },  buffers = {    theme = "dropdown",    previewer = false,    initial_mode = "normal",  },  planets = {    show_pluto = true,    show_moon = true,  },  git_files = {    theme = "dropdown",    hidden = true,    previewer = false,    show_untracked = true,  },  lsp_references = {    theme = "dropdown",    initial_mode = "normal",  },  lsp_definitions = {    theme = "dropdown",    initial_mode = "normal",  },  lsp_declarations = {    theme = "dropdown",    initial_mode = "normal",  },  lsp_implementations = {    theme = "dropdown",    initial_mode = "normal",  },}function M.config()  -- Define this minimal config so that it's available if telescope is not yet available.  lvim.builtin.telescope = {    ---@usage disable telescope completely [not recommended]    active = true,    on_config_done = nil,  }  local ok, actions = pcall(require, "telescope.actions")  if not ok then    return  end  lvim.builtin.telescope = vim.tbl_extend("force", lvim.builtin.telescope, {    defaults = {      prompt_prefix = " ",      selection_caret = " ",      entry_prefix = "  ",      initial_mode = "insert",      selection_strategy = "reset",      sorting_strategy = "descending",      layout_strategy = "horizontal",      layout_config = {        width = 0.75,        preview_cutoff = 120,        horizontal = {          preview_width = function(_, cols, _)            if cols < 120 then              return math.floor(cols * 0.5)            end            return math.floor(cols * 0.6)          end,          mirror = false,        },        vertical = { mirror = false },      },      vimgrep_arguments = {        "rg",        "--color=never",        "--no-heading",        "--with-filename",        "--line-number",        "--column",        "--smart-case",        "--hidden",        "--glob=!.git/",      },      mappings = {        i = {          ["<C-n>"] = actions.move_selection_next,          ["<C-p>"] = actions.move_selection_previous,          ["<C-c>"] = actions.close,          ["<C-j>"] = actions.cycle_history_next,          ["<C-k>"] = actions.cycle_history_prev,          ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,          ["<CR>"] = actions.select_default,          ["<C-d>"] = require("telescope.actions").delete_buffer,        },        n = {          ["<C-n>"] = actions.move_selection_next,          ["<C-p>"] = actions.move_selection_previous,          ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,          ["dd"] = require("telescope.actions").delete_buffer,        },      },      pickers = pickers,      file_ignore_patterns = {},      path_display = { "smart" },      winblend = 0,      border = {},      borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },      color_devicons = true,      set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,    },    pickers = pickers,    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"      },    },  })endfunction M.setup()  local previewers = require "telescope.previewers"  local sorters = require "telescope.sorters"  local actions = require "telescope.actions"  lvim.builtin.telescope = vim.tbl_extend("keep", {    file_previewer = previewers.vim_buffer_cat.new,    grep_previewer = previewers.vim_buffer_vimgrep.new,    qflist_previewer = previewers.vim_buffer_qflist.new,    file_sorter = sorters.get_fuzzy_file,    generic_sorter = sorters.get_generic_fuzzy_sorter,    ---@usage Mappings are fully customizable. Many familiar mapping patterns are setup as defaults.    mappings = {      i = {        ["<C-n>"] = actions.move_selection_next,        ["<C-p>"] = actions.move_selection_previous,        ["<C-c>"] = actions.close,        ["<C-j>"] = actions.cycle_history_next,        ["<C-k>"] = actions.cycle_history_prev,        ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,        ["<CR>"] = actions.select_default + actions.center,      },      n = {        ["<C-n>"] = actions.move_selection_next,        ["<C-p>"] = actions.move_selection_previous,        ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,        ["dd"] = require("telescope.actions").delete_buffer,      },    },  }, lvim.builtin.telescope)  local telescope = require "telescope"  telescope.setup(lvim.builtin.telescope)  if lvim.builtin.project.active then    pcall(function()      require("telescope").load_extension "projects"    end)  end  if lvim.builtin.notify.active then    pcall(function()      require("telescope").load_extension "notify"    end)  end  if lvim.builtin.telescope.on_config_done then    lvim.builtin.telescope.on_config_done(telescope)  end  if lvim.builtin.telescope.extensions and lvim.builtin.telescope.extensions.fzf then    pcall(function()      require("telescope").load_extension "fzf"    end)  endendreturn M
 |