mirror of
				https://github.com/vim/vim.git
				synced 2025-11-03 09:44:48 -05:00 
			
		
		
		
	
		
			
	
	
		
			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:
							 |