diff options
author | Hirokazu Hata <h.hata.ai.t@gmail.com> | 2020-03-30 21:30:24 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-30 14:30:24 +0200 |
commit | 4139678f97ee556ab142031a1ed5c7580278b64f (patch) | |
tree | 0788bfa6572893e4de325d7522387b9854ce7c12 | |
parent | e700a88bb6bdc96f4d62a384aecd3bec2040ac3b (diff) | |
download | rneovim-4139678f97ee556ab142031a1ed5c7580278b64f.tar.gz rneovim-4139678f97ee556ab142031a1ed5c7580278b64f.tar.bz2 rneovim-4139678f97ee556ab142031a1ed5c7580278b64f.zip |
vim.uri: fix uri_to_fname (#12059)
fix: #12056
If the colon of the drive letter of windows is URI encoded,
it doesn't match the expected pattern, so decode it first.
-rw-r--r-- | runtime/lua/vim/uri.lua | 3 | ||||
-rw-r--r-- | test/functional/lua/uri_spec.lua | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/runtime/lua/vim/uri.lua b/runtime/lua/vim/uri.lua index 1065f84f4c..d91fb7ffd3 100644 --- a/runtime/lua/vim/uri.lua +++ b/runtime/lua/vim/uri.lua @@ -70,6 +70,7 @@ local function uri_from_bufnr(bufnr) end local function uri_to_fname(uri) + uri = uri_decode(uri) -- TODO improve this. if is_windows_file_uri(uri) then uri = uri:gsub('^file:///', '') @@ -77,7 +78,7 @@ local function uri_to_fname(uri) else uri = uri:gsub('^file://', '') end - return uri_decode(uri) + return uri end -- Return or create a buffer for a uri. diff --git a/test/functional/lua/uri_spec.lua b/test/functional/lua/uri_spec.lua index 19b1eb1f61..128c7c6137 100644 --- a/test/functional/lua/uri_spec.lua +++ b/test/functional/lua/uri_spec.lua @@ -85,6 +85,15 @@ describe('URI methods', function() eq('C:\\Foo\\Bar\\Baz.txt', exec_lua(test_case)) end) + it('file path includes only ascii charactors with encoded colon character', function() + local test_case = [[ + local uri = 'file:///C%3A/Foo/Bar/Baz.txt' + return vim.uri_to_fname(uri) + ]] + + eq('C:\\Foo\\Bar\\Baz.txt', exec_lua(test_case)) + end) + it('file path including white space', function() local test_case = [[ local uri = 'file:///C:/Foo%20/Bar/Baz.txt' |