mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-06 12:44:23 +08:00
rust-analyzer for non-Cargo projects (#4118)
* rust-analyzer in non-cargo projects rust-analyzer can also be used in non-cargo projects. This requires a rust-project.json file in the project root [1]. Make the rust-analyzer linter search for a rust-project.json file if no Cargo.toml file could be found. [1]: https://rust-analyzer.github.io/manual.html#non-cargo-based-projects * Document rust-analyzer without cargo * Test rust-analyzer with non-cargo projects Change the other rust tests to match the new directory structure of the test files.
This commit is contained in:
@@ -9,9 +9,21 @@ function! ale_linters#rust#analyzer#GetCommand(buffer) abort
|
||||
endfunction
|
||||
|
||||
function! ale_linters#rust#analyzer#GetProjectRoot(buffer) abort
|
||||
" Try to find nearest Cargo.toml for cargo projects
|
||||
let l:cargo_file = ale#path#FindNearestFile(a:buffer, 'Cargo.toml')
|
||||
|
||||
return !empty(l:cargo_file) ? fnamemodify(l:cargo_file, ':h') : ''
|
||||
if !empty(l:cargo_file)
|
||||
return fnamemodify(l:cargo_file, ':h')
|
||||
endif
|
||||
|
||||
" Try to find nearest rust-project.json for non-cargo projects
|
||||
let l:rust_project = ale#path#FindNearestFile(a:buffer, 'rust-project.json')
|
||||
|
||||
if !empty(l:rust_project)
|
||||
return fnamemodify(l:rust_project, ':h')
|
||||
endif
|
||||
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
call ale#linter#Define('rust', {
|
||||
|
||||
Reference in New Issue
Block a user