| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | local M = {}local utils = require "utils"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 recommeded]    active = true,    on_config_done = nil,  }  local status_ok, actions = pcall(require, "telescope.actions")  if not status_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,        prompt_position = "bottom",        preview_cutoff = 120,        horizontal = { mirror = false },        vertical = { mirror = false },      },      file_sorter = require("telescope.sorters").get_fzy_sorter,      file_ignore_patterns = {},      generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,      path_display = { shorten = 5 },      winblend = 0,      border = {},      borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },      color_devicons = true,      use_less = true,      set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,      file_previewer = require("telescope.previewers").vim_buffer_cat.new,      grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new,      qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new,      -- Developer configurations: Not meant for general override      -- buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker,      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,          -- To disable a keymap, put [map] = false          -- So, to not map "<C-n>", just put          -- ["<c-t>"] = trouble.open_with_trouble,          -- ["<c-x>"] = false,          -- ["<esc>"] = actions.close,          -- Otherwise, just set the mapping to the function that you want it to be.          -- ["<C-i>"] = actions.select_horizontal,          -- Add up multiple actions          -- You can perform as many actions in a row as you like          -- ["<CR>"] = actions.select_default + actions.center + my_cool_custom_action,        },        n = {          ["<C-n>"] = actions.move_selection_next,          ["<C-p>"] = actions.move_selection_previous,          ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,          -- ["<c-t>"] = trouble.open_with_trouble,          -- ["<C-i>"] = my_cool_custom_action,        },      },    },    extensions = {      fzy_native = {        override_generic_sorter = false,        override_file_sorter = true,      },    },  })endfunction M.find_lunarvim_files(opts)  opts = opts or {}  local themes = require "telescope.themes"  local theme_opts = themes.get_ivy {    sorting_strategy = "ascending",    layout_strategy = "bottom_pane",    prompt = ">> ",    prompt_title = "~ LunarVim files ~",    cwd = utils.join_paths(get_runtime_dir(), "lvim"),    find_command = { "git", "ls-files" },  }  opts = vim.tbl_deep_extend("force", theme_opts, opts)  require("telescope.builtin").find_files(opts)endfunction M.grep_lunarvim_files(opts)  opts = opts or {}  local themes = require "telescope.themes"  local theme_opts = themes.get_ivy {    sorting_strategy = "ascending",    layout_strategy = "bottom_pane",    prompt = ">> ",    prompt_title = "~ search LunarVim ~",    cwd = utils.join_paths(get_runtime_dir(), "lvim"),  }  opts = vim.tbl_deep_extend("force", theme_opts, opts)  require("telescope.builtin").live_grep(opts)endfunction M.view_lunarvim_changelog()  local finders = require "telescope.finders"  local make_entry = require "telescope.make_entry"  local pickers = require "telescope.pickers"  local previewers = require "telescope.previewers"  local actions = require "telescope.actions"  local opts = {}  local conf = require("telescope.config").values  opts.entry_maker = make_entry.gen_from_git_commits(opts)  pickers.new(opts, {    prompt_title = "LunarVim changelog",    finder = finders.new_oneshot_job(      vim.tbl_flatten {        "git",        "log",        "--pretty=oneline",        "--abbrev-commit",        "--",        ".",      },      opts    ),    previewer = {      previewers.git_commit_diff_to_parent.new(opts),      previewers.git_commit_diff_to_head.new(opts),      previewers.git_commit_diff_as_was.new(opts),      previewers.git_commit_message.new(opts),    },    --TODO: consider opening a diff view when pressing enter    attach_mappings = function(_, map)      map("i", "<enter>", actions._close)      map("n", "<enter>", actions._close)      map("i", "<esc>", actions._close)      map("n", "<esc>", actions._close)      map("n", "q", actions._close)      return true    end,    sorter = conf.file_sorter(opts),  }):find()endfunction M.setup()  local telescope = require "telescope"  telescope.setup(lvim.builtin.telescope)  if lvim.builtin.project.active then    telescope.load_extension "projects"  end  if lvim.builtin.telescope.on_config_done then    lvim.builtin.telescope.on_config_done(telescope)  endendreturn M
 |