diff options
Diffstat (limited to 'autoload/rust')
| -rw-r--r-- | autoload/rust/debugging.vim | 98 | 
1 files changed, 98 insertions, 0 deletions
| diff --git a/autoload/rust/debugging.vim b/autoload/rust/debugging.vim new file mode 100644 index 00000000..352556d7 --- /dev/null +++ b/autoload/rust/debugging.vim @@ -0,0 +1,98 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1 +   +" 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_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 +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: + +endif | 
