summaryrefslogtreecommitdiff
path: root/lua/tests/manual/auto_picker.lua
blob: e33edeeed6d7345a898ef9891159c44182bc2a3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
RELOAD('telescope')

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 find_files = function(opts)
  opts = opts or {}
  opts.prompt_prefix = ''

  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, 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()
    local input = "pickers.lua"
    for i = 1, #input do
      feed(input:sub(i, i))
      coroutine.yield()
    end

    vim.wait(300, function() end)
    feed("<CR>", '')

    coroutine.yield()
    print("STILL CALLED?")
  end))

  p:find()
end

find_files()