diff --git a/lua/telescope/builtin/__internal.lua b/lua/telescope/builtin/__internal.lua index fc53339..0832250 100644 --- a/lua/telescope/builtin/__internal.lua +++ b/lua/telescope/builtin/__internal.lua @@ -1117,7 +1117,7 @@ internal.marks = function(opts) line = line, lnum = lnum, col = col, - filename = vim.fs.normalize(v.file or bufname), + filename = utils.path_expand(v.file or bufname), } -- non alphanumeric marks goes to last if mark:match "%w" then diff --git a/lua/telescope/utils.lua b/lua/telescope/utils.lua index ca4a887..944c82d 100644 --- a/lua/telescope/utils.lua +++ b/lua/telescope/utils.lua @@ -39,6 +39,10 @@ utils.path_expand = function(path) path = { path, { "string" } }, } + if utils.is_uri(path) then + return path + end + if path:match "^[%%#<]" then path = vim.fn.expand(path) end diff --git a/lua/tests/automated/utils_spec.lua b/lua/tests/automated/utils_spec.lua index 48f7689..f1cbb68 100644 --- a/lua/tests/automated/utils_spec.lua +++ b/lua/tests/automated/utils_spec.lua @@ -38,6 +38,26 @@ describe("path_expand()", function() local path_newline = [[/home/user/hello\nworld]] eq(path_newline, utils.path_expand(path_newline)) end) + describe("early return for uri", function() + local uris = { + [[https://www.example.com/index.html]], + [[ftp://ftp.example.com/files/document.pdf]], + [[mailto:user@example.com]], + [[tel:+1234567890]], + [[file:///home/user/documents/report.docx]], + [[news:comp.lang.python]], + [[ldap://ldap.example.com:389/dc=example,dc=com]], + [[git://github.com/user/repo.git]], + [[steam://run/123456]], + [[magnet:?xt=urn:btih:6B4C3343E1C63A1BC36AEB8A3D1F52C4EDEEB096]], + } + + for _, uri in ipairs(uris) do + it(uri, function() + eq(uri, utils.path_expand(uri)) + end) + end + end) end) describe("is_uri", function()