neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

debugging.vim (3203B)


      1 " Last Modified: 2023-09-11
      2 
      3 " For debugging, inspired by https://github.com/w0rp/rust/blob/master/autoload/rust/debugging.vim
      4 
      5 let s:global_variable_list = [
      6            \ '_rustfmt_autosave_because_of_config',
      7            \ 'ftplugin_rust_source_path',
      8            \ 'loaded_syntastic_rust_cargo_checker',
      9            \ 'loaded_syntastic_rust_filetype',
     10            \ 'loaded_syntastic_rust_rustc_checker',
     11            \ 'rust_bang_comment_leader',
     12            \ 'rust_cargo_avoid_whole_workspace',
     13            \ 'rust_clip_command',
     14            \ 'rust_conceal',
     15            \ 'rust_conceal_mod_path',
     16            \ 'rust_conceal_pub',
     17            \ 'rust_fold',
     18            \ 'rust_last_args',
     19            \ 'rust_last_rustc_args',
     20            \ 'rust_original_delimitMate_excluded_regions',
     21            \ 'rust_playpen_url',
     22            \ 'rust_prev_delimitMate_quotes',
     23            \ 'rust_recent_nearest_cargo_tol',
     24            \ 'rust_recent_root_cargo_toml',
     25            \ 'rust_recommended_style',
     26            \ 'rust_set_conceallevel',
     27            \ 'rust_set_conceallevel=1',
     28            \ 'rust_set_foldmethod',
     29            \ 'rust_set_foldmethod=1',
     30            \ 'rust_shortener_url',
     31            \ 'rustc_makeprg_no_percent',
     32            \ 'rustc_path',
     33            \ 'rustfmt_autosave',
     34            \ 'rustfmt_autosave_if_config_present',
     35            \ 'rustfmt_command',
     36            \ 'rustfmt_emit_files',
     37            \ 'rustfmt_fail_silently',
     38            \ 'rustfmt_options',
     39            \ 'syntastic_extra_filetypes',
     40            \ 'syntastic_rust_cargo_fname',
     41            \]
     42 
     43 function! s:Echo(message) abort
     44    execute 'echo a:message'
     45 endfunction
     46 
     47 function! s:EchoGlobalVariables() abort
     48    for l:key in s:global_variable_list
     49        if l:key !~# '^_'
     50            call s:Echo('let g:' . l:key . ' = ' . string(get(g:, l:key, v:null)))
     51        endif
     52 
     53        if has_key(b:, l:key)
     54            call s:Echo('let b:' . l:key . ' = ' . string(b:[l:key]))
     55        endif
     56    endfor
     57 endfunction
     58 
     59 function! rust#debugging#Info() abort
     60    call cargo#Load()
     61    call rust#Load()
     62    call rustfmt#Load()
     63    call s:Echo('rust.vim Global Variables:')
     64    call s:Echo('')
     65    call s:EchoGlobalVariables()
     66 
     67    silent let l:output = system(g:rustfmt_command . ' --version')
     68    echo l:output
     69 
     70    let l:rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
     71    silent let l:output = system(l:rustc . ' --version')
     72    echo l:output
     73 
     74    silent let l:output = system('cargo --version')
     75    echo l:output
     76 
     77    version
     78 
     79    if exists(":SyntasticInfo")
     80        echo "----"
     81        echo "Info from Syntastic:"
     82        execute "SyntasticInfo"
     83    endif
     84 endfunction
     85 
     86 function! rust#debugging#InfoToClipboard() abort
     87    redir @"
     88    silent call rust#debugging#Info()
     89    redir END
     90 
     91    call s:Echo('RustInfo copied to your clipboard')
     92 endfunction
     93 
     94 function! rust#debugging#InfoToFile(filename) abort
     95    let l:expanded_filename = expand(a:filename)
     96 
     97    redir => l:output
     98    silent call rust#debugging#Info()
     99    redir END
    100 
    101    call writefile(split(l:output, "\n"), l:expanded_filename)
    102    call s:Echo('RustInfo written to ' . l:expanded_filename)
    103 endfunction
    104 
    105 " vim: set et sw=4 sts=4 ts=8: