return {
|
|
"nvim-telescope/telescope.nvim",
|
|
branch = "0.1.x",
|
|
dependencies = {
|
|
"nvim-lua/plenary.nvim",
|
|
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
|
|
"nvim-tree/nvim-web-devicons",
|
|
},
|
|
config = function()
|
|
local telescope = require("telescope")
|
|
local actions = require("telescope.actions")
|
|
local previewers = require("telescope.previewers")
|
|
local previewers_utils = require("telescope.previewers.utils")
|
|
local sorters = require("telescope.sorters")
|
|
local builtin = require("telescope.builtin")
|
|
|
|
local max_size = 100000
|
|
local truncate_large_files = function(filepath, bufnr, opts)
|
|
opts = opts or {}
|
|
|
|
filepath = vim.fn.expand(filepath)
|
|
vim.loop.fs_stat(filepath, function(_, stat)
|
|
if not stat then
|
|
return
|
|
end
|
|
if stat.size > max_size then
|
|
local cmd = { "head", "-c", max_size, filepath }
|
|
previewers_utils.job_maker(cmd, bufnr, opts)
|
|
else
|
|
previewers.buffer_previewer_maker(filepath, bufnr, opts)
|
|
end
|
|
end)
|
|
end
|
|
|
|
telescope.setup({
|
|
defaults = {
|
|
file_sorter = sorters.get_fzy_sorter,
|
|
prompt_prefix = " >",
|
|
color_devicons = true,
|
|
|
|
buffer_previewer_maker = truncate_large_files,
|
|
initial_mode = "insert",
|
|
selection_strategy = "reset",
|
|
sorting_strategy = "ascending",
|
|
layout_strategy = "horizontal",
|
|
layout_config = {
|
|
horizontal = {
|
|
prompt_position = "top",
|
|
preview_width = 0.55,
|
|
results_width = 0.8,
|
|
},
|
|
vertical = {
|
|
mirror = false,
|
|
},
|
|
width = 0.87,
|
|
height = 0.80,
|
|
preview_cutoff = 120,
|
|
},
|
|
path_display = { "truncate" },
|
|
winblend = 0,
|
|
border = {},
|
|
|
|
mappings = {
|
|
i = {
|
|
["<C-k>"] = actions.move_selection_previous, -- move to prev result
|
|
["<C-j>"] = actions.move_selection_next, -- move to next result
|
|
["<C-q>"] = actions.send_selected_to_qflist + actions.open_qflist,
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
telescope.load_extension("fzf")
|
|
|
|
local git_branches = function()
|
|
builtin.git_branches({
|
|
attach_mappings = function(_, map)
|
|
map("i", "<c-d>", actions.git_delete_branch)
|
|
map("n", "<c-d>", actions.git_delete_branch)
|
|
return true
|
|
end,
|
|
})
|
|
end
|
|
|
|
local find_files = function()
|
|
local ran, errorMessage = pcall(function()
|
|
builtin.git_files({ show_untracked = true })
|
|
end)
|
|
if not ran then
|
|
builtin.find_files()
|
|
end
|
|
end
|
|
|
|
-- set keymaps
|
|
local keymap = vim.keymap -- for conciseness
|
|
|
|
keymap.set("n", "<C-g>", builtin.live_grep, { desc = "Live grep over project files." })
|
|
keymap.set("n", "<C-p>", find_files, { desc = "Fuzzy find files in cwd" })
|
|
|
|
keymap.set("n", "<leader>fb", builtin.buffers, { desc = "Fuzzy find open buffers" })
|
|
keymap.set("n", "<leader>fo", builtin.oldfiles, { desc = "Fuzzy find recently opened files" })
|
|
|
|
keymap.set("n", "<leader>m", builtin.marks, { desc = "Fuzzy find marks" })
|
|
keymap.set("n", "<leader>ch", builtin.command_history, { desc = "Fuzzy find recent commands" })
|
|
|
|
keymap.set("n", "<leader>gb", git_branches, { desc = "Fuzzy find git branches" })
|
|
-- keymap.set("n", "<leader>gs", builtin.git_status, { desc = "Fuzzy find current git status" })
|
|
|
|
keymap.set("n", "<leader>df", function()
|
|
builtin.find_files({
|
|
prompt_title = "< VimRC >",
|
|
cwd = vim.fn.expand("~/.config/nvim"),
|
|
hidden = true,
|
|
})
|
|
end, { desc = "Find neovim config files" })
|
|
end,
|
|
}
|