mirror of
https://github.com/zoriya/telescope.nvim.git
synced 2026-08-16 02:45:09 +00:00
feat: Add a test file
This commit is contained in:
@@ -1,15 +1,14 @@
|
||||
RELOAD('telescope')
|
||||
|
||||
local actions = require('telescope.actions')
|
||||
local finders = require('telescope.finders')
|
||||
local make_entry = require('telescope.make_entry')
|
||||
local previewers = require('telescope.previewers')
|
||||
local pickers = require('telescope.pickers')
|
||||
local sorters = require('telescope.sorters')
|
||||
local utils = require('telescope.utils')
|
||||
|
||||
local find_files = function(opts)
|
||||
opts = opts or {}
|
||||
opts.prompt_prefix = ''
|
||||
|
||||
local find_command = opts.find_command
|
||||
|
||||
@@ -56,8 +55,9 @@ local find_files = function(opts)
|
||||
count = count + 1
|
||||
end)
|
||||
|
||||
local feed = function(text)
|
||||
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(text, true, false, true), 'n', true)
|
||||
local feed = function(text, feed_opts)
|
||||
feed_opts = feed_opts or 'n'
|
||||
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(text, true, false, true), feed_opts, true)
|
||||
end
|
||||
|
||||
p:register_completion_callback(coroutine.wrap(function()
|
||||
@@ -68,10 +68,9 @@ local find_files = function(opts)
|
||||
end
|
||||
|
||||
vim.wait(300, function() end)
|
||||
feed("<CR>", '')
|
||||
|
||||
vim.cmd [[:q]]
|
||||
vim.cmd [[:Messages]]
|
||||
vim.cmd [[stopinsert]]
|
||||
coroutine.yield()
|
||||
end))
|
||||
|
||||
p:find()
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
require('plenary.reload').reload_module('plenary')
|
||||
require('plenary.reload').reload_module('telescope')
|
||||
|
||||
--[[
|
||||
|
||||
Goals:
|
||||
1. Easily test a sorter and finder to make sure we get all the results we need.
|
||||
|
||||
--]]
|
||||
|
||||
local finders = require('telescope.finders')
|
||||
local make_entry = require('telescope.make_entry')
|
||||
local pickers = require('telescope.pickers')
|
||||
local sorters = require('telescope.sorters')
|
||||
local EntryManager = require('telescope.entry_manager')
|
||||
|
||||
local find_and_sort_test = function(prompt, f, s)
|
||||
local info = {}
|
||||
|
||||
local start = vim.loop.hrtime()
|
||||
|
||||
info.filtered = 0
|
||||
info.added = 0
|
||||
info.scoring_time = 0
|
||||
info.set_entry = 0
|
||||
|
||||
local entry_manager = EntryManager:new(25, function()
|
||||
info.set_entry = info.set_entry + 1
|
||||
end, info)
|
||||
|
||||
local completed = false
|
||||
|
||||
local process_result = function(entry)
|
||||
local score_start = vim.loop.hrtime()
|
||||
local score = s:score(prompt, entry)
|
||||
info.scoring_time = info.scoring_time + (vim.loop.hrtime() - score_start) / 1e9
|
||||
|
||||
-- Filter these out here.
|
||||
if score == -1 then
|
||||
info.filtered = info.filtered + 1
|
||||
return
|
||||
end
|
||||
|
||||
info.added = info.added + 1
|
||||
entry_manager:add_entry(
|
||||
s:score(prompt, entry),
|
||||
entry
|
||||
)
|
||||
end
|
||||
|
||||
local process_complete = function()
|
||||
info.time = (vim.loop.hrtime() - start) / 1e9
|
||||
|
||||
info.total = info.filtered + info.added
|
||||
completed = true
|
||||
end
|
||||
|
||||
f(prompt, process_result, process_complete)
|
||||
|
||||
-- Wait until we're done to return
|
||||
vim.wait(5000, function() return completed end, 10)
|
||||
|
||||
return entry_manager, info
|
||||
end
|
||||
|
||||
local info_to_csv = function(info, filename)
|
||||
local writer = io.open(filename, "a")
|
||||
|
||||
writer:write(string.format("%.8f", info.scoring_time) .. "\t")
|
||||
writer:write(string.format("%.8f", info.time) .. "\t")
|
||||
writer:write(info.looped .. "\t")
|
||||
writer:write(info.filtered .. "\t")
|
||||
writer:write(info.added .. "\t")
|
||||
writer:write(info.inserted .. "\t")
|
||||
writer:write(info.total .. "\t")
|
||||
writer:write(info.set_entry .. "\t")
|
||||
writer:write(string.format("%.0f", collectgarbage("count")) .. "\t")
|
||||
writer:write("\n")
|
||||
|
||||
writer:close()
|
||||
end
|
||||
|
||||
|
||||
local cwd = vim.fn.expand("~/build/neovim")
|
||||
|
||||
collectgarbage("collect")
|
||||
for _ = 1, 1 do
|
||||
|
||||
-- local s = sorters.get_fuzzy_file()
|
||||
local s = sorters.get_generic_fuzzy_sorter()
|
||||
local finder = finders.new_oneshot_job(
|
||||
{"fdfind"},
|
||||
{
|
||||
cwd = cwd,
|
||||
entry_maker = make_entry.gen_from_file {cwd = cwd},
|
||||
-- disable_devicons = true,
|
||||
-- maximum_results = 1000,
|
||||
}
|
||||
)
|
||||
|
||||
local res, info = find_and_sort_test(
|
||||
"pickers.lua",
|
||||
finder,
|
||||
s
|
||||
)
|
||||
|
||||
-- print(vim.inspect(res:get_entry(1)))
|
||||
-- print(vim.inspect(info))
|
||||
|
||||
info_to_csv(info, "/home/tj/tmp/profile.csv")
|
||||
|
||||
collectgarbage("collect")
|
||||
end
|
||||
-- No skip: 2,206,186
|
||||
-- Ya skip: 2,133
|
||||
Reference in New Issue
Block a user