fuzzy.lua

Branches > main > 1f269d0 > files / nvim / lua / fuzzy.lua

local api = vim.api
local fn = vim.fn

local ui = require("utils.ui")

local function fzf_window(win)
  local tmp = fn.tempname()
  local cmd = 'fzf --pointer=">" --gutter=" " --prompt="" --no-info --no-scrollbar' .. ">" .. fn.shellescape(tmp)

  fn.termopen({"sh", "-c", cmd}, {
    on_exit = function()
      pcall(api.nvim_win_close, win, true)
      if fn.filereadable(tmp) == 1 then
        local sel = fn.readfile(tmp)[1]
        os.remove(tmp)
        if sel and #sel > 0 then
          vim.cmd("edit " .. fn.fnameescape(sel))
        end
      end
    end})
  vim.cmd("startinsert")
end

local function fuzzy_find()
  if fn.executable("fzf") ~= 1 then
    print("You don't have fzf, can't fuzzy find!")
  else
    local win = ui.open_fullscreen_window()
    local ok = pcall(fzf_window, win)
    if not ok then
      pcall(api.nvim_win_close, win, true)
    end
  end
end

return {fuzzy_find = fuzzy_find}