summaryrefslogtreecommitdiffstats
path: root/autoload/cargo/quickfix.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2018-07-08 15:16:28 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2018-07-08 15:16:28 +0200
commit055f7710b65dfa2df52fc0b5be2486ae36ac5751 (patch)
tree0b6c36a330e8c0c4e37ad521773d28b6c52ad3ec /autoload/cargo/quickfix.vim
parent33f610feb73ce782cf41a7d9a377541991c692b5 (diff)
downloadvim-polyglot-055f7710b65dfa2df52fc0b5be2486ae36ac5751.tar.gz
vim-polyglot-055f7710b65dfa2df52fc0b5be2486ae36ac5751.zip
Update dependencies
Diffstat (limited to 'autoload/cargo/quickfix.vim')
-rw-r--r--autoload/cargo/quickfix.vim30
1 files changed, 30 insertions, 0 deletions
diff --git a/autoload/cargo/quickfix.vim b/autoload/cargo/quickfix.vim
new file mode 100644
index 00000000..13c3b465
--- /dev/null
+++ b/autoload/cargo/quickfix.vim
@@ -0,0 +1,30 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
+
+function! cargo#quickfix#CmdPre() abort
+ if &filetype ==# 'rust' && get(b:, 'current_compiler', '') ==# '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 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:
+
+endif