diff options
author | w0rp <w0rp@users.noreply.github.com> | 2018-01-12 12:04:26 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-12 12:04:26 +0000 |
commit | 65fa901ef0c15a2cd8c17642b0c5f0108ed93585 (patch) | |
tree | f6bd57d50f7fa6588693d1a66c0f7bf404e05250 /ale_linters | |
parent | ba1540a5452fe4523ed91b99f1469f4e86112a6b (diff) | |
parent | 2ef45ab7457566a10354b7833cbdf5137118cebf (diff) | |
download | ale-65fa901ef0c15a2cd8c17642b0c5f0108ed93585.zip |
Merge pull request #1275 from ipetkov/cargo-features
Teach ALE about cargo features and add some configuration options
Diffstat (limited to 'ale_linters')
-rw-r--r-- | ale_linters/rust/cargo.vim | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/ale_linters/rust/cargo.vim b/ale_linters/rust/cargo.vim index a0e123a4..09f41bbb 100644 --- a/ale_linters/rust/cargo.vim +++ b/ale_linters/rust/cargo.vim @@ -1,8 +1,11 @@ -" Author: Daniel Schemala <istjanichtzufassen@gmail.com> +" Author: Daniel Schemala <istjanichtzufassen@gmail.com>, +" Ivan Petkov <ivanppetkov@gmail.com> " Description: rustc invoked by cargo for rust files call ale#Set('rust_cargo_use_check', 1) call ale#Set('rust_cargo_check_all_targets', 0) +call ale#Set('rust_cargo_default_feature_behavior', 'default') +call ale#Set('rust_cargo_include_features', '') function! ale_linters#rust#cargo#GetCargoExecutable(bufnr) abort if ale#path#FindNearestFile(a:bufnr, 'Cargo.toml') isnot# '' @@ -29,10 +32,27 @@ function! ale_linters#rust#cargo#GetCommand(buffer, version_output) abort \ && ale#Var(a:buffer, 'rust_cargo_check_all_targets') \ && ale#semver#GTE(l:version, [0, 22, 0]) + let l:include_features = ale#Var(a:buffer, 'rust_cargo_include_features') + if !empty(l:include_features) + let l:include_features = ' --features ' . ale#Escape(l:include_features) + endif + + let l:default_feature_behavior = ale#Var(a:buffer, 'rust_cargo_default_feature_behavior') + if l:default_feature_behavior is# 'all' + let l:include_features = '' + let l:default_feature = ' --all-features' + elseif l:default_feature_behavior is# 'none' + let l:default_feature = ' --no-default-features' + else + let l:default_feature = '' + endif + return 'cargo ' \ . (l:use_check ? 'check' : 'build') \ . (l:use_all_targets ? ' --all-targets' : '') \ . ' --frozen --message-format=json -q' + \ . l:default_feature + \ . l:include_features endfunction call ale#linter#Define('rust', { |