all repos — dotfiles @ 0a867ad2e58c21d31f0ce106ab5812a152c6b83f

my *nix dotfiles

nvim/lua/fuzzy/buffers.lua (view raw)

 1local fn = vim.fn
 2local cmd = vim.cmd
 3local M = {}
 4
 5function M.fzy_buffers()
 6  local buffers = {}
 7
 8  -- list of buffers
 9  local nbuf = fn.range(1, fn.bufnr('$'))
10
11  -- filter out buffers that don't have 'buflisted' set
12  for _, n in ipairs(nbuf) do
13    if fn.buflisted(n) then
14      buffers[fn.bufname(n)] = n
15    end
16  end
17
18  -- write buffer names to file to feed to fzy
19  local buffile = fn.tempname()
20  local f = io.open(buffile, "a")
21  for b, _ in pairs(buffers) do
22    f:write(b, '\n')
23  end
24  f:close()
25
26  local fzy_cmd = {
27    'fzy -p "buf > " ',
28    '< ' .. buffile,
29  }
30
31  require('fzy/fzy').fzy_search(table.concat(fzy_cmd), function(stdout)
32    -- strip '\n'
33    local selected, _ = stdout:gsub('\n', '')
34    cmd('bd!')
35
36    cmd('buffer ' .. buffers[ selected ])
37    -- housekeeping
38    os.remove(buffile)
39  end
40  )
41
42end
43
44return M