Files
lua-config-vim/current_config/lua/alpha/select_to_quickfix.lua
2023-12-13 00:27:19 +03:00

54 lines
1.2 KiB
Lua

local api = vim.api
local function create_quickfix_entry(selection)
local filename, linenumber = selection:match "([^:]+):(%d+)"
return {
filename = vim.fn.getcwd() .. "/" .. filename,
lnum = tonumber(linenumber),
col = 1,
text = filename,
}
end
local function add_selections_to_quickfix(selections)
local quickfix_list = {}
for _, selection in ipairs(selections) do
local entry = create_quickfix_entry(selection)
table.insert(quickfix_list, entry)
end
vim.fn.setqflist(quickfix_list, "r")
end
local function get_selections()
local _, end_line, _, _ = unpack(vim.fn.getpos "'>")
local _, start_line, _, _ = unpack(vim.fn.getpos "'<")
local lines = api.nvim_buf_get_lines(0, start_line - 1, end_line, false)
local selections = {}
for _, line in ipairs(lines) do
for selection in line:gmatch "%S+" do
table.insert(selections, selection)
end
end
return selections
end
local function select_to_quickfix()
local selections = get_selections()
if #selections > 0 then
add_selections_to_quickfix(selections)
print "Selections added to quickfix list"
else
print "No selections found"
end
end
return {
handle = select_to_quickfix,
}