You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

177 lines
5.2 KiB

local M = {
"nvim-telescope/telescope.nvim",
dependencies = { { "nvim-telescope/telescope-fzf-native.nvim", build = "make", lazy = true } },
lazy = true,
cmd = "Telescope",
}
function M.config()
local wk = require "which-key"
wk.register {
["<leader>bb"] = { "<cmd>Telescope buffers previewer=false<cr>", "Find" },
["<leader>fb"] = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
["<leader>fc"] = { "<cmd>Telescope colorscheme<cr>", "Colorscheme" },
["<leader>ff"] = { "<cmd>Telescope find_files<cr>", "Find files" },
["<leader>fp"] = { "<cmd>lua require('telescope').extensions.projects.projects()<cr>", "Projects" },
["<leader>ft"] = { "<cmd>Telescope live_grep<cr>", "Find Text" },
["<leader>fs"] = { "<cmd>Telescope grep_string<cr>", "Find String" },
["<leader>fh"] = { "<cmd>Telescope help_tags<cr>", "Help" },
["<leader>fH"] = { "<cmd>Telescope highlights<cr>", "Highlights" },
["<leader>fi"] = { "<cmd>lua require('telescope').extensions.media_files.media_files()<cr>", "Media" },
["<leader>fl"] = { "<cmd>Telescope resume<cr>", "Last Search" },
["<leader>fM"] = { "<cmd>Telescope man_pages<cr>", "Man Pages" },
["<leader>fr"] = { "<cmd>Telescope oldfiles<cr>", "Recent File" },
["<leader>fR"] = { "<cmd>Telescope registers<cr>", "Registers" },
["<leader>fk"] = { "<cmd>Telescope keymaps<cr>", "Keymaps" },
["<leader>fC"] = { "<cmd>Telescope commands<cr>", "Commands" },
["<leader>go"] = { "<cmd>Telescope git_status<cr>", "Open changed file" },
["<leader>gb"] = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
["<leader>gc"] = { "<cmd>Telescope git_commits<cr>", "Checkout commit" },
["<leader>gC"] = {
"<cmd>Telescope git_bcommits<cr>",
"Checkout commit(for current file)",
},
["<leader>ls"] = { "<cmd>Telescope lsp_document_symbols<cr>", "Document Symbols" },
["<leader>lS"] = {
"<cmd>Telescope lsp_dynamic_workspace_symbols<cr>",
"Workspace Symbols",
},
["<leader>le"] = { "<cmd>Telescope quickfix<cr>", "Telescope Quickfix" },
}
vim.api.nvim_create_autocmd("FileType", {
pattern = "TelescopeResults",
callback = function(ctx)
vim.api.nvim_buf_call(ctx.buf, function()
vim.fn.matchadd("TelescopeParent", "\t\t.*$")
vim.api.nvim_set_hl(0, "TelescopeParent", { link = "Comment" })
end)
end,
})
local icons = require "user.icons"
local actions = require "telescope.actions"
local function filenameFirst(_, path)
local tail = vim.fs.basename(path)
local parent = vim.fs.dirname(path)
if parent == "." then
return tail
end
return string.format("%s\t\t%s", tail, parent)
end
require("telescope").setup {
defaults = {
prompt_prefix = icons.ui.Telescope .. " ",
selection_caret = icons.ui.Forward .. " ",
entry_prefix = " ",
initial_mode = "insert",
selection_strategy = "reset",
path_display = { "smart" },
color_devicons = true,
set_env = { ["COLORTERM"] = "truecolor" },
sorting_strategy = nil,
layout_strategy = nil,
layout_config = {},
vimgrep_arguments = {
"rg",
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case",
-- "--hidden",
"--glob=!.git/",
},
mappings = {
i = {
["<C-n>"] = actions.cycle_history_next,
["<C-p>"] = actions.cycle_history_prev,
["<C-j>"] = actions.move_selection_next,
["<C-k>"] = actions.move_selection_previous,
},
n = {
["<esc>"] = actions.close,
["j"] = actions.move_selection_next,
["k"] = actions.move_selection_previous,
["q"] = actions.close,
},
},
},
pickers = {
live_grep = {
theme = "dropdown",
},
grep_string = {
theme = "dropdown",
},
find_files = {
theme = "dropdown",
previewer = false,
path_display = filenameFirst,
},
buffers = {
theme = "dropdown",
previewer = false,
initial_mode = "normal",
mappings = {
i = {
["<C-d>"] = actions.delete_buffer,
},
n = {
["dd"] = actions.delete_buffer,
},
},
},
planets = {
show_pluto = true,
show_moon = true,
},
colorscheme = {
enable_preview = 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",
},
},
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"
},
},
}
end
return M