mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -07:00
fix(lsp): accept file URIs without a hostname
RFC 8089, which defines the file URI scheme, also allows URIs without a hostname, i.e. of the form file:/path/to/file. These are returned by some language servers and accepted by other LSP implementations, such as VSCode's, so it is reasonable for us to accept them as well.
This commit is contained in:
parent
4547137aaf
commit
a2c2a08652
@ -52,7 +52,7 @@ end
|
||||
|
||||
--@private
|
||||
local function is_windows_file_uri(uri)
|
||||
return uri:match('^file:///[a-zA-Z]:') ~= nil
|
||||
return uri:match('^file:/+[a-zA-Z]:') ~= nil
|
||||
end
|
||||
|
||||
--- Get a URI from a file path.
|
||||
@ -74,7 +74,7 @@ local function uri_from_fname(path)
|
||||
return table.concat(uri_parts)
|
||||
end
|
||||
|
||||
local URI_SCHEME_PATTERN = '^([a-zA-Z]+[a-zA-Z0-9+-.]*)://.*'
|
||||
local URI_SCHEME_PATTERN = '^([a-zA-Z]+[a-zA-Z0-9+-.]*):/+.*'
|
||||
|
||||
--- Get a URI from a bufnr
|
||||
--@param bufnr (number): Buffer number
|
||||
@ -100,10 +100,10 @@ local function uri_to_fname(uri)
|
||||
uri = uri_decode(uri)
|
||||
-- TODO improve this.
|
||||
if is_windows_file_uri(uri) then
|
||||
uri = uri:gsub('^file:///', '')
|
||||
uri = uri:gsub('^file:/+', '')
|
||||
uri = uri:gsub('/', '\\')
|
||||
else
|
||||
uri = uri:gsub('^file://', '')
|
||||
uri = uri:gsub('^file:/+', '/')
|
||||
end
|
||||
return uri
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user