runtime(rust): improve loading time

fixes: #17745
closes: #17749

Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Christian Brabandt
2025-07-20 10:38:16 +02:00
parent 31ec66403d
commit 1afe8c3a4d
3 changed files with 33 additions and 6 deletions

View File

@ -1,6 +1,8 @@
" Author: Stephen Sugden <stephen@stephensugden.com>
" Last Modified: 2023-09-11
" Last Change: 2025 Mar 31 by Vim project (rename s:RustfmtConfigOptions())
" Last Change:
" 2025 Mar 31 by Vim project (rename s:RustfmtConfigOptions())
" 2025 Jul 14 by Vim project (don't parse rustfmt version automatically #17745)
"
" Adapted from https://github.com/fatih/vim-go
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
@ -22,6 +24,12 @@ if !exists("g:rustfmt_fail_silently")
endif
function! rustfmt#DetectVersion()
let s:rustfmt_version = "0"
let s:rustfmt_help = ""
let s:rustfmt_unstable_features = ""
if !get(g:, 'rustfmt_detect_version', 0)
return s:rustfmt_version
endif
" Save rustfmt '--help' for feature inspection
silent let s:rustfmt_help = system(g:rustfmt_command . " --help")
let s:rustfmt_unstable_features = s:rustfmt_help =~# "--unstable-features"
@ -30,9 +38,7 @@ function! rustfmt#DetectVersion()
silent let l:rustfmt_version_full = system(g:rustfmt_command . " --version")
let l:rustfmt_version_list = matchlist(l:rustfmt_version_full,
\ '\vrustfmt ([0-9]+[.][0-9]+[.][0-9]+)')
if len(l:rustfmt_version_list) < 3
let s:rustfmt_version = "0"
else
if len(l:rustfmt_version_list) >= 3
let s:rustfmt_version = l:rustfmt_version_list[1]
endif
return s:rustfmt_version
@ -63,6 +69,12 @@ function! s:RustfmtWriteMode()
endfunction
function! rustfmt#RustfmtConfigOptions()
let default = '--edition 2018'
if !get(g:, 'rustfmt_find_toml', 0)
return default
endif
let l:rustfmt_toml = findfile('rustfmt.toml', expand('%:p:h') . ';')
if l:rustfmt_toml !=# ''
return '--config-path '.shellescape(fnamemodify(l:rustfmt_toml, ":p"))
@ -74,7 +86,7 @@ function! rustfmt#RustfmtConfigOptions()
endif
" Default to edition 2018 in case no rustfmt.toml was found.
return '--edition 2018'
return default
endfunction
function! s:RustfmtCommandRange(filename, line1, line2)