feat: Add status, better debug, and some associated refactors

* [WIP]: Mon 28 Sep 2020 01:08:24 PM EDT

* add much much better tracking. so much less hax

* status updates, oneshot job updates, etc.

* remove temp function

* add status function

* asdfasdfasdf
This commit is contained in:
TJ DeVries
2020-09-29 22:52:38 -04:00
committed by GitHub
parent 2ce23696de
commit ae7fd0d27a
22 changed files with 981 additions and 439 deletions

View File

@@ -1,8 +1,6 @@
require('plenary.reload').reload_module('plenary')
require('plenary.reload').reload_module('telescope')
PERF = function() end
--[[
Goals:

View File

@@ -6,8 +6,7 @@ local log = require('telescope.log')
log.level = 'info'
-- log.use_console = false
local pickers = require('telescope.pickers')
local utils = require('telescope.utils')
local EntryManager = require('telescope.entry_manager')
--[[
lua RELOAD('plenary'); require("plenary.test_harness"):test_directory("busted", "./tests/automated")
@@ -22,7 +21,7 @@ describe('Picker', function()
describe('process_result', function()
it('works with one entry', function()
local manager = pickers.entry_manager(5, nil)
local manager = EntryManager:new(5, nil)
manager:add_entry(1, "hello")
@@ -30,7 +29,7 @@ describe('Picker', function()
end)
it('works with two entries', function()
local manager = pickers.entry_manager(5, nil)
local manager = EntryManager:new(5, nil)
manager:add_entry(1, "hello")
manager:add_entry(2, "later")
@@ -41,7 +40,7 @@ describe('Picker', function()
it('calls functions when inserting', function()
local called_count = 0
local manager = pickers.entry_manager(5, function() called_count = called_count + 1 end)
local manager = EntryManager:new(5, function() called_count = called_count + 1 end)
assert(called_count == 0)
manager:add_entry(1, "hello")
@@ -50,7 +49,7 @@ describe('Picker', function()
it('calls functions when inserting twice', function()
local called_count = 0
local manager = pickers.entry_manager(5, function() called_count = called_count + 1 end)
local manager = EntryManager:new(5, function() called_count = called_count + 1 end)
assert(called_count == 0)
manager:add_entry(1, "hello")
@@ -60,7 +59,7 @@ describe('Picker', function()
it('correctly sorts lower scores', function()
local called_count = 0
local manager = pickers.entry_manager(5, function() called_count = called_count + 1 end)
local manager = EntryManager:new(5, function() called_count = called_count + 1 end)
manager:add_entry(5, "worse result")
manager:add_entry(2, "better result")
@@ -75,27 +74,23 @@ describe('Picker', function()
it('respects max results', function()
local called_count = 0
local manager = pickers.entry_manager(1, function() called_count = called_count + 1 end)
local manager = EntryManager:new(1, function() called_count = called_count + 1 end)
manager:add_entry(2, "better result")
manager:add_entry(5, "worse result")
assert.are.same("better result", manager:get_entry(1))
-- once to insert "worse"
-- once to insert "better"
-- and then to move "worse"
assert.are.same(1, called_count)
end)
-- TODO: We should decide if we want to add this or not.
-- it('should handle no scores', function()
-- local manager = pickers.entry_manager(5, nil)
-- local manager = EntryManager:new(5, nil)
-- manager:add_entry(nil,
-- end)
it('should allow simple entries', function()
local manager = pickers.entry_manager(5)
local manager = EntryManager:new(5)
local counts_executed = 0
manager:add_entry(1, setmetatable({}, {

View File

@@ -0,0 +1,80 @@
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 {}
local find_command = opts.find_command
if not find_command then
if 1 == vim.fn.executable("fd") then
find_command = { 'fd', '--type', 'f' }
elseif 1 == vim.fn.executable("fdfind") then
find_command = { 'fdfind', '--type', 'f' }
elseif 1 == vim.fn.executable("rg") then
find_command = { 'rg', '--files' }
end
end
if opts.cwd then
opts.cwd = vim.fn.expand(opts.cwd)
end
opts.entry_maker = opts.entry_maker or make_entry.gen_from_file(opts)
local p = pickers.new(opts, {
prompt = 'Find Files',
finder = finders.new_oneshot_job(
find_command,
opts
),
previewer = previewers.cat.new(opts),
sorter = sorters.get_fuzzy_file(),
track = true,
})
local count = 0
p:register_completion_callback(function(s)
print(count, vim.inspect(s.stats, {
process = function(item)
if type(item) == 'string' and item:sub(1, 1) == '_' then
return nil
end
return item
end,
}))
count = count + 1
end)
local feed = function(text)
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(text, true, false, true), 'n', true)
end
p:register_completion_callback(coroutine.wrap(function()
local input = "pickers.lua"
for i = 1, #input do
feed(input:sub(i, i))
coroutine.yield()
end
vim.wait(300, function() end)
vim.cmd [[:q]]
vim.cmd [[:Messages]]
vim.cmd [[stopinsert]]
end))
p:find()
end
find_files()

View File

@@ -7,9 +7,6 @@ local previewers = require('telescope.previewers')
local pickers = require('telescope.pickers')
local sorters = require('telescope.sorters')
PERF_DEBUG = 182
vim.api.nvim_buf_set_lines(PERF_DEBUG, 0, -1, false, {})
local cwd = vim.fn.expand("~/build/neovim")
pickers.new {
@@ -28,7 +25,6 @@ pickers.new {
}:find()
COMPLETED = false
-- vim.wait(3000, function()
-- vim.cmd [[redraw!]]
-- return COMPLETED

View File

@@ -0,0 +1,71 @@
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 slow_proc = function(opts)
opts = opts or {}
if opts.cwd then
opts.cwd = vim.fn.expand(opts.cwd)
end
opts.entry_maker = opts.entry_maker or make_entry.gen_from_file(opts)
local p = pickers.new(opts, {
prompt = 'Slow Proc',
finder = finders.new_oneshot_job(
{"./scratch/slow_proc.sh"},
opts
),
previewer = previewers.cat.new(opts),
sorter = sorters.get_fuzzy_file(),
track = true,
})
local count = 0
p:register_completion_callback(function(s)
print(count, vim.inspect(s.stats, {
process = function(item)
if type(item) == 'string' and item:sub(1, 1) == '_' then
return nil
end
return item
end,
}))
count = count + 1
end)
local feed = function(text)
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(text, true, false, true), 'n', true)
end
if false then
p:register_completion_callback(coroutine.wrap(function()
local input = "pickers.lua"
for i = 1, #input do
feed(input:sub(i, i))
coroutine.yield()
end
vim.wait(300, function() end)
vim.cmd [[:q]]
vim.cmd [[:Messages]]
vim.cmd [[stopinsert]]
end))
end
p:find()
end
slow_proc()