diff options
Diffstat (limited to 'lua/lvim/core/telescope.lua')
-rw-r--r-- | lua/lvim/core/telescope.lua | 181 |
1 files changed, 61 insertions, 120 deletions
diff --git a/lua/lvim/core/telescope.lua b/lua/lvim/core/telescope.lua index 35f6b4a2..7911d433 100644 --- a/lua/lvim/core/telescope.lua +++ b/lua/lvim/core/telescope.lua @@ -8,11 +8,6 @@ function M.config() 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 = "ï‘« ", @@ -28,135 +23,44 @@ function M.config() horizontal = { mirror = false }, vertical = { mirror = false }, }, - file_sorter = require("telescope.sorters").get_fzy_sorter, + vimgrep_arguments = { + "rg", + "--color=never", + "--no-heading", + "--with-filename", + "--line-number", + "--column", + "--smart-case", + "--hidden", + }, 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, + pickers = { + find_files = { + find_command = { "fd", "--type=file", "--hidden", "--smart-case" }, }, - 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, + live_grep = { + --@usage don't include the filename in the search results + only_sort_text = true, }, }, }, extensions = { - fzy_native = { - override_generic_sorter = false, - override_file_sorter = true, + 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" }, }, }) end -function 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_prefix = ">> ", - prompt_title = "~ LunarVim files ~", - cwd = get_runtime_dir(), - search_dirs = { get_runtime_dir() .. "/lvim", lvim.lsp.templates_dir }, - } - opts = vim.tbl_deep_extend("force", theme_opts, opts) - require("telescope.builtin").find_files(opts) -end - -function 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_prefix = ">> ", - prompt_title = "~ search LunarVim ~", - cwd = get_runtime_dir(), - search_dirs = { get_runtime_dir() .. "/lvim", lvim.lsp.templates_dir }, - } - opts = vim.tbl_deep_extend("force", theme_opts, opts) - require("telescope.builtin").live_grep(opts) -end - -function 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() -end - function M.code_actions() local opts = { winblend = 15, @@ -174,20 +78,57 @@ function M.code_actions() previewer = false, shorten_path = false, } - require("telescope.builtin").lsp_code_actions(require("telescope.themes").get_dropdown(opts)) + local builtin = require "telescope.builtin" + local themes = require "telescope.themes" + builtin.lsp_code_actions(themes.get_dropdown(opts)) end function M.setup() - local telescope = require "telescope" + 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, + }, + }, + }, lvim.builtin.telescope) + + local telescope = require "telescope" telescope.setup(lvim.builtin.telescope) + if lvim.builtin.project.active then - telescope.load_extension "projects" + pcall(function() + require("telescope").load_extension "projects" + 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 + require("telescope").load_extension "fzf" + end end return M |