local function project_files() local opts = {} if vim.loop.fs_stat '.git' then opts.show_untracked = true require('telescope.builtin').git_files(opts) else local client = vim.lsp.get_active_clients()[1] if client then opts.cwd = client.config.root_dir end require('telescope.builtin').find_files(opts) end end local M = { 'nvim-telescope/telescope.nvim', cmd = { 'Telescope' }, } function M.config() local telescope = require 'telescope' local actions = require 'telescope.actions' local previewers = require 'telescope.previewers' local Job = require 'plenary.job' local new_maker = function(filepath, bufnr, opts) filepath = vim.fn.expand(filepath) Job:new({ command = 'file', args = { '--mime-type', '-b', filepath }, on_exit = function(j) local mime_type = vim.split(j:result()[1], '/')[1] if mime_type == 'text' then previewers.buffer_previewer_maker(filepath, bufnr, opts) else -- maybe we want to write something to the buffer here vim.schedule(function() vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, { 'BINARY' }) end) end end, }):sync() end -- local fb_actions = require "telescope".extensions.file_browser.actions telescope.setup { pickers = { find_files = { theme = 'dropdown', }, live_grep = { theme = 'dropdown', }, buffers = { theme = 'dropdown', }, }, defaults = { layout_config = { vertical = { width = 0.5 }, -- other layout configuration here }, buffer_previewer_maker = new_maker, prompt_prefix = ' ', selection_caret = ' ', path_display = { 'smart' }, file_ignore_patterns = { '.git/', 'node_modules' }, mappings = { i = { [''] = actions.move_selection_next, [''] = actions.move_selection_previous, [''] = actions.cycle_history_next, [''] = actions.cycle_history_prev, [''] = actions.close, }, }, vimgrep_arguments = { 'rg', '--color=never', '--no-heading', '--with-filename', '--line-number', '--column', '--smart-case', '--trim', -- add this value }, }, } end return M