my demo first config lua
This commit is contained in:
53
current_config/lua/alpha/select_to_quickfix.lua
Normal file
53
current_config/lua/alpha/select_to_quickfix.lua
Normal file
@@ -0,0 +1,53 @@
|
||||
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,
|
||||
}
|
||||
Reference in New Issue
Block a user