58 lines
1.3 KiB
Lua
58 lines
1.3 KiB
Lua
|
|
local utils = {}
|
||
|
|
|
||
|
|
utils.command_finder = function(command, min)
|
||
|
|
if min == nil then
|
||
|
|
min = 3
|
||
|
|
end
|
||
|
|
|
||
|
|
return function(input)
|
||
|
|
-- Dont run the commands unless we have somting to search that wont
|
||
|
|
-- return a ton of results or on some commands the command files with
|
||
|
|
-- no search term
|
||
|
|
if #input < min then
|
||
|
|
return "-- Please type more than " .. min .. " chars --"
|
||
|
|
end
|
||
|
|
|
||
|
|
-- TODO(ade): Think if we want to start escaping the command here. I
|
||
|
|
-- dont know if its causing issues while trying to use regex especially
|
||
|
|
-- with word boundaries `input:gsub("'", "\\'"):gsub('"', '\\"')`
|
||
|
|
local handle = io.popen(command .. " " .. input .. " 2>&1")
|
||
|
|
if handle == nil then
|
||
|
|
return {}
|
||
|
|
end
|
||
|
|
local result = handle:read "*a"
|
||
|
|
handle:close()
|
||
|
|
|
||
|
|
return result
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
utils.vimgrep_action = function()
|
||
|
|
return function(item)
|
||
|
|
-- Match file and line form vimgrep style commands
|
||
|
|
local file = item:match "([^:]+):"
|
||
|
|
local line = item:match ":(%d+):"
|
||
|
|
|
||
|
|
-- Cant do anything if we cant find a file to go to
|
||
|
|
if file == nil then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
vim.cmd("edit " .. file)
|
||
|
|
if line ~= nil then
|
||
|
|
vim.cmd(line)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
utils.file_action = function()
|
||
|
|
return function(file)
|
||
|
|
if file == nil then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
vim.cmd("edit " .. file)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
return utils
|