nvim-configs/lua/plugin/telescope.lua

81 lines
2.3 KiB
Lua

local M = {
'nvim-telescope/telescope.nvim',
dependencies = { 'nvim-lua/plenary.nvim' },
lazy = true,
cmd = 'Telescope',
}
function M.config()
local telescope = require 'telescope'
local actions = require 'telescope.actions'
require 'telescope'.setup {
defaults = {
path_display = { 'filename_first' },
layout_strategy = 'horizontal',
layout_config = {
prompt_position = 'top',
width = function(_, max_columns, _)
return math.min(max_columns, 180)
end,
horizontal = {
preview_width = 0.5,
},
},
sorting_strategy = 'ascending',
scroll_strategy = 'limit',
mappings = {
n = {
['<esc>'] = actions.close,
['q'] = actions.close,
},
},
},
pickers = {
find_files = {
hidden = true,
},
live_grep = {
disable_coordinates = true,
},
grep_string = {
disable_coordinates = true,
},
},
extensions = {
file_browser = {
git_icons = {
added = 'A',
changed = 'M',
copied = 'C',
deleted = 'D',
renamed = 'R',
unmerged = 'U',
untracked = '?',
},
},
},
}
telescope.load_extension 'ui-select'
end
M.keymap = function()
local builtin = require 'telescope.builtin'
vim.keymap.set('n', '<leader>f', builtin.find_files, { desc = 'Find files' })
vim.keymap.set('n', '<leader>r', builtin.resume, { desc = 'Resume last search' })
vim.keymap.set('n', '<s-f>', function() builtin.grep_string { word_match = '-w' } end,
{ desc = 'Find word under cursor' })
vim.keymap.set('v', '<s-f>', builtin.grep_string, { desc = 'Find visual selection' })
vim.keymap.set('n', '<leader>st', builtin.live_grep, { desc = 'Search for text in files' })
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = 'List diagnostics' })
vim.keymap.set('n', '<leader>o', builtin.lsp_document_symbols, { desc = 'List document symbols' })
vim.keymap.set('n', '<leader>p', builtin.lsp_workspace_symbols, { desc = 'List workspace symbols' })
vim.keymap.set('n', '<leader>gb', builtin.git_branches, { desc = 'List git branches' })
vim.keymap.set('n', '<leader>gc', builtin.git_commits, { desc = 'List git commits' })
vim.keymap.set('n', '<m-q>', function() builtin.git_status {
max_results = 10000,
temp__scrolling_limit = 10000,
} end, { desc = 'Git status' })
end
return M