6
6
if exists (' current_compiler' )
7
7
finish
8
8
endif
9
+ runtime compiler /rustc.vim
9
10
let current_compiler = " cargo"
10
11
11
12
if exists (' :CompilerSet' ) != 2
12
13
command -nargs =* CompilerSet setlocal <args>
13
14
endif
14
15
15
16
if exists (' g:cargo_makeprg_params' )
16
- execute ' CompilerSet makeprg=cargo\ ' .g: cargo_makeprg_params .' \ $*'
17
+ execute ' CompilerSet makeprg=cargo\ ' .escape ( g: cargo_makeprg_params, ' \|" ' ) .' \ $*'
17
18
else
18
19
CompilerSet makeprg = cargo\ $ *
19
20
endif
20
21
21
- CompilerSet errorformat =
22
- \% f :% l: % c :\ % t %* [^:]:\ % m ,
23
- \% f :% l: % c :\ %* \\ d :%* \\ d \ % t %* [^:]:\ % m ,
24
- \% - G% f :% l \ % s ,
25
- \% - G%* [\ ]^,
26
- \% - G%* [\ ]^%* [~],
27
- \% - G%* [\ ]...
28
-
29
22
" Allow a configurable global Cargo.toml name. This makes it easy to
30
23
" support variations like 'cargo.toml'.
31
- if ! exists (' g:cargo_manifest_name' )
32
- let g: cargo_manifest_name = ' Cargo.toml'
33
- endif
34
-
35
- let s: local_manifest = fnamemodify (findfile (g: cargo_manifest_name , ' .;' ), ' :p:h' ).' /'
24
+ let s: cargo_manifest_name = get (g: , ' cargo_manifest_name' , ' Cargo.toml' )
36
25
26
+ let s: local_manifest = findfile (s: cargo_manifest_name , ' .;' )
37
27
if s: local_manifest != ' '
28
+ let s: local_manifest = fnamemodify (s: local_manifest , ' :p:h' ).' /'
38
29
augroup cargo
39
30
au !
40
31
au QuickfixCmdPost make call s: FixPaths ()
@@ -46,23 +37,23 @@ if s:local_manifest != ''
46
37
let qflist = getqflist ()
47
38
let manifest = s: local_manifest
48
39
for qf in qflist
49
- if ! qf[ ' valid' ]
50
- let m = matchlist (qf[ ' text' ] , ' \v.*\ (file://(.*)\ )$' )
51
- if len (m ) > 0
40
+ if ! qf. valid
41
+ let m = matchlist (qf. text, ' (file://\ (.*\) )$' )
42
+ if ! empty (m )
52
43
let manifest = m [1 ].' /'
53
44
" Manually strip another slash if needed; usually just an
54
45
" issue on Windows.
55
- if manifest = ~ ' ^/[A-Z]* :/'
46
+ if manifest = ~ ' ^/[A-Z]:/'
56
47
let manifest = manifest[1 :]
57
48
endif
58
49
endif
59
50
continue
60
51
endif
61
- let filename = bufname (qf[ ' bufnr' ] )
52
+ let filename = bufname (qf. bufnr )
62
53
if filereadable (filename)
63
54
continue
64
55
endif
65
- let qf[ ' filename' ] = simplify (manifest.filename)
56
+ let qf. filename = simplify (manifest.filename)
66
57
call remove (qf, ' bufnr' )
67
58
endfor
68
59
call setqflist (qflist, ' r' )
0 commit comments