diff --git a/lua/telescope/make_entry.lua b/lua/telescope/make_entry.lua index 7892e05..ed20eba 100644 --- a/lua/telescope/make_entry.lua +++ b/lua/telescope/make_entry.lua @@ -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)