local M = {} local _, builtin = pcall(require, "telescope.builtin") local _, finders = pcall(require, "telescope.finders") local _, pickers = pcall(require, "telescope.pickers") local _, sorters = pcall(require, "telescope.sorters") local _, themes = pcall(require, "telescope.themes") local _, actions = pcall(require, "telescope.actions") local _, previewers = pcall(require, "telescope.previewers") local _, make_entry = pcall(require, "telescope.make_entry") local utils = require "lvim.utils" function M.find_lunarvim_files(opts) opts = opts or {} local theme_opts = themes.get_ivy { sorting_strategy = "ascending", layout_strategy = "bottom_pane", prompt_prefix = ">> ", prompt_title = "~ LunarVim files ~", cwd = get_runtime_dir(), search_dirs = { utils.join_paths(get_runtime_dir(), "lvim"), lvim.lsp.templates_dir }, } opts = vim.tbl_deep_extend("force", theme_opts, opts) builtin.find_files(opts) end function M.grep_lunarvim_files(opts) opts = opts or {} local theme_opts = themes.get_ivy { sorting_strategy = "ascending", layout_strategy = "bottom_pane", prompt_prefix = ">> ", prompt_title = "~ search LunarVim ~", cwd = get_runtime_dir(), search_dirs = { utils.join_paths(get_runtime_dir(), "lvim"), lvim.lsp.templates_dir }, } opts = vim.tbl_deep_extend("force", theme_opts, opts) builtin.live_grep(opts) end function M.view_lunarvim_changelog() local opts = { cwd = get_lvim_base_dir() } 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", "", actions._close) map("n", "", actions._close) map("i", "", actions._close) map("n", "", actions._close) map("n", "q", actions._close) return true end, sorter = sorters.generic_sorter, }):find() end return M