" For debugging, inspired by https://github.com/w0rp/rust/blob/master/autoload/rust/debugging.vim let s:global_variable_list = [ \ '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_because_of_config', \ '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 call s:Echo('let g:' . l:key . ' = ' . string(get(g:, l:key, v:null))) 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: