mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 10:45:16 -07:00
fix(lua): remove uri fragment from file paths (#27647)
Problem: Some LSP servers return `textDocument/documentLink` responses containing file URIs with line/column numbers in the fragment. `vim.uri_to_fname` returns invalid file names for these URIs. Solution: Remove the URI fragment from file URIs.
This commit is contained in:
parent
cb146cc4aa
commit
0190771713
@ -104,6 +104,10 @@ function M.uri_to_fname(uri)
|
||||
if scheme ~= 'file' then
|
||||
return uri
|
||||
end
|
||||
local fragment_index = uri:find('#')
|
||||
if fragment_index ~= nil then
|
||||
uri = uri:sub(1, fragment_index - 1)
|
||||
end
|
||||
uri = M.uri_decode(uri)
|
||||
--TODO improve this.
|
||||
if is_windows_file_uri(uri) then
|
||||
|
@ -88,6 +88,12 @@ describe('URI methods', function()
|
||||
|
||||
eq('/xy/åäö/ɧ/汉语/↥/🤦/🦄/å/بِيَّ.txt', exec_lua(test_case))
|
||||
end)
|
||||
|
||||
it('file path with uri fragment', function()
|
||||
exec_lua("uri = 'file:///Foo/Bar/Baz.txt#fragment'")
|
||||
|
||||
eq('/Foo/Bar/Baz.txt', exec_lua('return vim.uri_to_fname(uri)'))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('decode Windows filepath', function()
|
||||
@ -184,6 +190,15 @@ describe('URI methods', function()
|
||||
]]
|
||||
)
|
||||
end)
|
||||
|
||||
it('uri_to_fname returns non-file schema URI with fragment unchanged', function()
|
||||
eq(
|
||||
'scheme://path#fragment',
|
||||
exec_lua [[
|
||||
return vim.uri_to_fname('scheme://path#fragment')
|
||||
]]
|
||||
)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user