Skip to content

Commit

Permalink
#1149 Fix conversion from URIs to filenames on Windows
Browse files Browse the repository at this point in the history
  • Loading branch information
w0rp committed Nov 21, 2017
1 parent e71d831 commit cf599f4
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
9 changes: 8 additions & 1 deletion autoload/ale/path.vim
Original file line number Diff line number Diff line change
Expand Up @@ -185,5 +185,12 @@ function! ale#path#FromURI(uri) abort
let l:i = len('file://')
let l:encoded_path = a:uri[: l:i - 1] is# 'file://' ? a:uri[l:i :] : a:uri

return ale#uri#Decode(l:encoded_path)
let l:path = ale#uri#Decode(l:encoded_path)

" If the path is like /C:/foo/bar, it should be C:\foo\bar instead.
if l:path =~# '^/[a-zA-Z]:'
let l:path = substitute(l:path[1:], '/', '\\', 'g')
endif

return l:path
endfunction
3 changes: 3 additions & 0 deletions test/test_path_uri.vader
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ Execute(ale#path#ToURI should work for Windows paths):
AssertEqual 'file:///C:/foo/bar/baz.tst', ale#path#ToURI('C:\foo\bar\baz.tst')
AssertEqual 'foo/bar/baz.tst', ale#path#ToURI('foo\bar\baz.tst')

Execute(ale#path#FromURI should work for Windows paths):
AssertEqual 'C:\foo\bar\baz.tst', ale#path#FromURI('file:///C:/foo/bar/baz.tst')

Execute(ale#path#ToURI should work for Unix paths):
AssertEqual 'file:///foo/bar/baz.tst', ale#path#ToURI('/foo/bar/baz.tst')
AssertEqual 'foo/bar/baz.tst', ale#path#ToURI('foo/bar/baz.tst')
Expand Down

0 comments on commit cf599f4

Please sign in to comment.