forked from aniani/vim
		
	
		
			
	
	
		
			106 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			106 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Last Modified: 2023-09-11 | ||
|  | 
 | ||
|  | " For debugging, inspired by https://github.com/w0rp/rust/blob/master/autoload/rust/debugging.vim | ||
|  | 
 | ||
|  | let s:global_variable_list = [ | ||
|  |             \ '_rustfmt_autosave_because_of_config', | ||
|  |             \ 'ftplugin_rust_source_path', | ||
|  |             \ 'loaded_syntastic_rust_cargo_checker', | ||
|  |             \ 'loaded_syntastic_rust_filetype', | ||
|  |             \ 'loaded_syntastic_rust_rustc_checker', | ||
|  |             \ 'rust_bang_comment_leader', | ||
|  |             \ 'rust_cargo_avoid_whole_workspace', | ||
|  |             \ 'rust_clip_command', | ||
|  |             \ 'rust_conceal', | ||
|  |             \ 'rust_conceal_mod_path', | ||
|  |             \ 'rust_conceal_pub', | ||
|  |             \ 'rust_fold', | ||
|  |             \ 'rust_last_args', | ||
|  |             \ 'rust_last_rustc_args', | ||
|  |             \ 'rust_original_delimitMate_excluded_regions', | ||
|  |             \ 'rust_playpen_url', | ||
|  |             \ 'rust_prev_delimitMate_quotes', | ||
|  |             \ 'rust_recent_nearest_cargo_tol', | ||
|  |             \ 'rust_recent_root_cargo_toml', | ||
|  |             \ 'rust_recommended_style', | ||
|  |             \ 'rust_set_conceallevel', | ||
|  |             \ 'rust_set_conceallevel=1', | ||
|  |             \ 'rust_set_foldmethod', | ||
|  |             \ 'rust_set_foldmethod=1', | ||
|  |             \ 'rust_shortener_url', | ||
|  |             \ 'rustc_makeprg_no_percent', | ||
|  |             \ 'rustc_path', | ||
|  |             \ 'rustfmt_autosave', | ||
|  |             \ 'rustfmt_autosave_if_config_present', | ||
|  |             \ 'rustfmt_command', | ||
|  |             \ 'rustfmt_emit_files', | ||
|  |             \ 'rustfmt_fail_silently', | ||
|  |             \ 'rustfmt_options', | ||
|  |             \ 'syntastic_extra_filetypes', | ||
|  |             \ 'syntastic_rust_cargo_fname', | ||
|  |             \] | ||
|  | 
 | ||
|  | function! s:Echo(message) abort | ||
|  |     execute 'echo a:message' | ||
|  | endfunction | ||
|  | 
 | ||
|  | function! s:EchoGlobalVariables() abort | ||
|  |     for l:key in s:global_variable_list | ||
|  |         if l:key !~# '^_' | ||
|  |             call s:Echo('let g:' . l:key . ' = ' . string(get(g:, l:key, v:null))) | ||
|  |         endif | ||
|  | 
 | ||
|  |         if has_key(b:, l:key) | ||
|  |             call s:Echo('let b:' . l:key . ' = ' . string(b:[l:key])) | ||
|  |         endif | ||
|  |     endfor | ||
|  | endfunction | ||
|  | 
 | ||
|  | function! rust#debugging#Info() abort | ||
|  |     call cargo#Load() | ||
|  |     call rust#Load() | ||
|  |     call rustfmt#Load() | ||
|  |     call s:Echo('rust.vim Global Variables:') | ||
|  |     call s:Echo('') | ||
|  |     call s:EchoGlobalVariables() | ||
|  | 
 | ||
|  |     silent let l:output = system(g:rustfmt_command . ' --version') | ||
|  |     echo l:output | ||
|  | 
 | ||
|  |     let l:rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" | ||
|  |     silent let l:output = system(l:rustc . ' --version') | ||
|  |     echo l:output | ||
|  | 
 | ||
|  |     silent let l:output = system('cargo --version') | ||
|  |     echo l:output | ||
|  | 
 | ||
|  |     version | ||
|  | 
 | ||
|  |     if exists(":SyntasticInfo") | ||
|  |         echo "----" | ||
|  |         echo "Info from Syntastic:" | ||
|  |         execute "SyntasticInfo" | ||
|  |     endif | ||
|  | endfunction | ||
|  | 
 | ||
|  | function! rust#debugging#InfoToClipboard() abort | ||
|  |     redir @" | ||
|  |     silent call rust#debugging#Info() | ||
|  |     redir END | ||
|  | 
 | ||
|  |     call s:Echo('RustInfo copied to your clipboard') | ||
|  | endfunction | ||
|  | 
 | ||
|  | function! rust#debugging#InfoToFile(filename) abort | ||
|  |     let l:expanded_filename = expand(a:filename) | ||
|  | 
 | ||
|  |     redir => l:output | ||
|  |     silent call rust#debugging#Info() | ||
|  |     redir END | ||
|  | 
 | ||
|  |     call writefile(split(l:output, "\n"), l:expanded_filename) | ||
|  |     call s:Echo('RustInfo written to ' . l:expanded_filename) | ||
|  | endfunction | ||
|  | 
 | ||
|  | " vim: set et sw=4 sts=4 ts=8: |