123456789101112131415161718192021222324252627282930 |
- " Last Modified: 2023-09-11
- function! cargo#quickfix#CmdPre() abort
- if &filetype ==# 'rust' && get(b:, 'current_compiler', '') ==# 'cargo' &&
- \ &makeprg =~ '\V\^cargo\ \.\*'
- " Preserve the current directory, and 'lcd' to the nearest Cargo file.
- let b:rust_compiler_cargo_qf_has_lcd = haslocaldir()
- let b:rust_compiler_cargo_qf_prev_cd = getcwd()
- let b:rust_compiler_cargo_qf_prev_cd_saved = 1
- let l:nearest = fnamemodify(cargo#nearestRootCargo(0), ':h')
- execute 'lchdir! '.l:nearest
- else
- let b:rust_compiler_cargo_qf_prev_cd_saved = 0
- endif
- endfunction
- function! cargo#quickfix#CmdPost() abort
- if exists("b:rust_compiler_cargo_qf_prev_cd_saved") && b:rust_compiler_cargo_qf_prev_cd_saved
- " Restore the current directory.
- if b:rust_compiler_cargo_qf_has_lcd
- execute 'lchdir! '.b:rust_compiler_cargo_qf_prev_cd
- else
- execute 'chdir! '.b:rust_compiler_cargo_qf_prev_cd
- endif
- let b:rust_compiler_cargo_qf_prev_cd_saved = 0
- endif
- endfunction
- " vim: set et sw=4 sts=4 ts=8:
|