fix: check for Windows drive letter when parsing vimgrep (#1494)

This commit is contained in:
Luke Kershaw
2021-12-03 15:29:20 +00:00
committed by GitHub
parent 9d7d322f85
commit b50b364ae1

View File

@@ -110,9 +110,29 @@ do
ordinal = 1,
}
local find = (function()
if Path.path.sep == "\\" then
return function(t)
local start, _, filename, lnum, col, text = string.find(t.value, [[([^:]+):(%d+):(%d+):(.*)]])
-- Handle Windows drive letter (e.g. "C:") at the beginning (if present)
if start == 3 then
filename = string.sub(t.value, 1, 3) .. filename
end
return filename, lnum, col, text
end
else
return function(t)
local _, _, filename, lnum, col, text = string.find(t.value, [[([^:]+):(%d+):(%d+):(.*)]])
return filename, lnum, col, text
end
end
end)()
-- Gets called only once to parse everything out for the vimgrep, after that looks up directly.
local parse = function(t)
local _, _, filename, lnum, col, text = string.find(t.value, [[([^:]+):(%d+):(%d+):(.*)]])
local filename, lnum, col, text = find(t.value)
local ok
ok, lnum = pcall(tonumber, lnum)