return { 'nvim-telescope/telescope.nvim', version = '*', dependencies = { 'nvim-lua/plenary.nvim', 'nvim-tree/nvim-web-devicons', 'molecule-man/telescope-menufacture', { 'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build', }, 'nvim-telescope/telescope-ui-select.nvim', }, cmd = { 'Telescope' }, keys = { { 'f', function() require('telescope').extensions.menufacture.find_files({ no_ignore = false, hidden = true }) end, desc = 'Find file', }, { 'c', function() require('telescope.builtin').commands() end, desc = 'Telescope commands', }, { 'g', function() Project_files() end, desc = 'Find git files', }, { 'o', function() require('telescope.builtin').oldfiles() end, desc = 'Find old files', }, { 'b', function() require('telescope.builtin').buffers() end, desc = 'Select buffer', }, { 'q', function() require('telescope.builtin').quickfix() end, desc = 'Quickfix list with telescope', }, { 'l', function() require('telescope').extensions.menufacture.live_grep() end, desc = 'Search in project', }, { 'j', function() require('telescope.builtin').jumplist() end, desc = 'Open jumplist', }, { '', function() require('telescope.builtin').current_buffer_fuzzy_find() end, desc = 'Find in buffer', }, { 'd', function() require('telescope').extensions.menufacture.grep_string() end, desc = 'Find in workspace', }, }, config = function() if vim.loop.os_uname().sysname == 'Windows_NT' then vim.env.HOME = '' end local home = vim.env.HOME local actions = require('telescope.actions') local mappingTab = { i = { [''] = actions.select_tab, [''] = actions.select_default, }, } Project_files = function() local opts = {} -- define here if you want to define something local ok = pcall(require('telescope').extensions.menufacture.git_files, opts) if not ok then require('telescope').extensions.menufacture.find_files(opts) end end local telescopeConfig = require('telescope.config') -- Clone the default Telescope configuration local vimgrep_arguments = { unpack(telescopeConfig.values.vimgrep_arguments) } -- I want to search in hidden/dot files. table.insert(vimgrep_arguments, '--hidden') -- I don't want to search in the `.git` directory. table.insert(vimgrep_arguments, '--glob') table.insert(vimgrep_arguments, '!**/.git/*') require('telescope').setup({ defaults = { mappings = { i = { [''] = actions.select_default + actions.center, [''] = actions.send_selected_to_loclist, [''] = actions.smart_send_to_qflist, }, }, results_title = false, preview_title = false, borderchars = { '', '', '', '', '', '', '', '' }, -- `hidden = true` is not supported in text grep commands. vimgrep_arguments = vimgrep_arguments, }, pickers = { buffers = { sort_lastused = true, sort_mru = true, ignore_current_buffer = false, theme = 'ivy', mappings = { i = { [''] = actions.delete_buffer, [''] = actions.select_default, }, n = { [''] = actions.delete_buffer, }, }, }, find_files = { theme = 'ivy', previewer = false, -- `hidden = true` will still show the inside of `.git/` as it's not `.gitignore`d. find_command = { 'rg', '--files', '--hidden', '--glob', '!**/.git/*' }, }, oldfiles = { theme = 'ivy', }, git_files = { theme = 'ivy', previewer = false, }, lsp_references = { show_line = false, include_declaration = false, }, lsp_dynamic_workspace_symbols = { theme = 'ivy', fname_width = 80, symbol_width = 55, symbol_type_width = 8, ignore_symbols = { 'namespace' } }, lsp_document_symbols = { theme = 'ivy', fname_width = 80, symbol_width = 85, symbol_type_width = 8, ignore_symbols = { 'namespace' } }, lsp_workspace_symbols = { fname_width = 30, symbol_width = 85, symbol_type_width = 8, ignore_symbols = { 'namespace' } }, }, extensions = { ['ui-select'] = { require('telescope.themes').get_dropdown { } }, ['menufacture'] = { mappings = { main_menu = { [{ 'n' }] = 'm' }, }, }, } }) require('telescope').load_extension('ui-select') require('telescope').load_extension('fzf') require('telescope').load_extension('menufacture') vim.api.nvim_create_autocmd('User', { pattern = 'TelescopePreviewerLoaded', callback = function() vim.api.nvim_win_set_option(0, 'wrap', true) vim.api.nvim_win_set_option(0, 'number', true) end, }) if vim.loop.os_uname().sysname == 'Windows_NT' then vim.env.HOME = home end vim.api.nvim_create_autocmd('BufEnter', { callback = function() if vim.opt.foldmethod:get() == 'expr' then vim.schedule(function() vim.opt.foldmethod = 'expr' end) end end, }) end }