local finders = require('telescope.finders') local previewers = require('telescope.previewers') local pickers = require('telescope.pickers') local sorters = require('telescope.sorters') -- Get all the items from v:oldfiles that are valid files local valid_oldfiles = vim.tbl_filter(function(val) return 0 ~= vim.fn.filereadable(val) end, vim.v.oldfiles) -- print(vim.inspect(valid_oldfiles)) -- => { -- "/home/tj/blah.txt", -- "/home/tj/another_dir/file.py", -- ... -- } -- Create a finder from a Lua list. local oldfiles_finder = finders.new_table(valid_oldfiles) -- Get a pre-defined sorter. -- Sorters return a "score" for each "Entry" found by a finder. -- -- This sorter is optimized to best find files in a fuzzy manner. local oldfiles_sorter = sorters.get_fuzzy_file() -- Get a pre-defined previewer. -- Previewers take the currently selected entry, -- and put a preview of it in a floating window local oldfiles_previewer = previewers.cat -- Create and run a Picker. -- Pickers are the main entry point to telescope. -- They manage the interactions between: -- Finder, -- Sorter, -- Previewer -- -- And provide the UI for the user. pickers.new { prompt = 'Oldfiles', finder = oldfiles_finder, sorter = oldfiles_sorter, previewer = oldfiles_previewer, }:find()