|
3 | 3 | " Maintainer: skywind3000 (at) gmail.com, 2016, 2017, 2018, 2019, 2020
|
4 | 4 | " Homepage: http://www.vim.org/scripts/script.php?script_id=5431
|
5 | 5 | "
|
6 |
| -" Last Modified: 2020/02/17 21:36 |
| 6 | +" Last Modified: 2020/02/18 21:11 |
7 | 7 | "
|
8 | 8 | " Run shell command in background and output to quickfix:
|
9 | 9 | " :AsyncRun[!] [options] {cmd} ...
|
@@ -1066,6 +1066,26 @@ function! asyncrun#path_join(home, name)
|
1066 | 1066 | return s:path_join(a:home, a:name)
|
1067 | 1067 | endfunc
|
1068 | 1068 |
|
| 1069 | +" change to unix |
| 1070 | +function! asyncrun#path_win2unix(winpath, prefix) |
| 1071 | + let prefix = a:prefix |
| 1072 | + let path = a:winpath |
| 1073 | + if path =~ '^\a:[/\\]' |
| 1074 | + let drive = tolower(strpart(path, 0, 1)) |
| 1075 | + let name = strpart(path, 3) |
| 1076 | + let p = s:path_join(prefix, drive) |
| 1077 | + let p = s:path_join(p, name) |
| 1078 | + return tr(p, '\', '/') |
| 1079 | + elseif path =~ '^[/\\]' |
| 1080 | + let drive = tolower(strpart(getcwd(), 0, 1)) |
| 1081 | + let name = strpart(path, 1) |
| 1082 | + let p = s:path_join(prefix, drive) |
| 1083 | + let p = s:path_join(p, name) |
| 1084 | + return tr(p, '\', '/') |
| 1085 | + else |
| 1086 | + return tr(a:winpath, '\', '/') |
| 1087 | + endif |
| 1088 | +endfunc |
1069 | 1089 |
|
1070 | 1090 |
|
1071 | 1091 | "----------------------------------------------------------------------
|
@@ -1591,11 +1611,24 @@ function! asyncrun#run(bang, opts, args, ...)
|
1591 | 1611 | let l:macros['<cwd>'] = l:macros['VIM_CWD']
|
1592 | 1612 | endif
|
1593 | 1613 |
|
| 1614 | + " windows can use $(WSL_XXX) |
| 1615 | + if s:asyncrun_windows != 0 |
| 1616 | + let wslnames = ['FILEPATH', 'FILENAME', 'FILEDIR', 'FILENOEXT'] |
| 1617 | + let wslnames += ['PATHNOEXT', 'FILEEXT', 'FILETYPE', 'RELDIR'] |
| 1618 | + let wslnames += ['RELNAME', 'CFILE', 'ROOT', 'HOME', 'CWD'] |
| 1619 | + for name in wslnames |
| 1620 | + let src = l:macros['VIM_' . name] |
| 1621 | + let l:macros['WSL_' . name] = asyncrun#path_win2unix(src, '/mnt') |
| 1622 | + endfor |
| 1623 | + endif |
| 1624 | + |
1594 | 1625 | " replace macros and setup environment variables
|
1595 | 1626 | for [l:key, l:val] in items(l:macros)
|
1596 | 1627 | let l:replace = (l:key[0] != '<')? '$('.l:key.')' : l:key
|
1597 | 1628 | if l:key[0] != '<'
|
1598 |
| - exec 'let $'.l:key.' = l:val' |
| 1629 | + if strpart(l:key, 0, 4) != 'WSL_' |
| 1630 | + exec 'let $'.l:key.' = l:val' |
| 1631 | + endif |
1599 | 1632 | endif
|
1600 | 1633 | let l:command = s:StringReplace(l:command, l:replace, l:val)
|
1601 | 1634 | let l:opts.text = s:StringReplace(l:opts.text, l:replace, l:val)
|
@@ -1659,7 +1692,7 @@ endfunc
|
1659 | 1692 | " asyncrun - version
|
1660 | 1693 | "----------------------------------------------------------------------
|
1661 | 1694 | function! asyncrun#version()
|
1662 |
| - return '2.4.5' |
| 1695 | + return '2.4.6' |
1663 | 1696 | endfunc
|
1664 | 1697 |
|
1665 | 1698 |
|
|
0 commit comments