| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | 
							- let s:plugin_dir  = expand('<sfile>:p:h:h:h').'/'
 
- let s:log_file    = s:plugin_dir.'gitgutter.log'
 
- let s:channel_log = s:plugin_dir.'channel.log'
 
- let s:new_log_session = 1
 
- function! gitgutter#debug#debug()
 
-   " Open a scratch buffer
 
-   vsplit __GitGutter_Debug__
 
-   normal! ggdG
 
-   setlocal buftype=nofile
 
-   setlocal bufhidden=delete
 
-   setlocal noswapfile
 
-   call s:vim_version()
 
-   call s:separator()
 
-   call s:git_version()
 
-   call s:separator()
 
-   call s:grep_version()
 
-   call s:separator()
 
-   call s:option('updatetime')
 
- endfunction
 
- function! s:separator()
 
-   call s:output('')
 
- endfunction
 
- function! s:vim_version()
 
-   redir => version_info
 
-     silent execute 'version'
 
-   redir END
 
-   call s:output(split(version_info, '\n')[0:2])
 
- endfunction
 
- function! s:git_version()
 
-   let v = system(g:gitgutter_git_executable.' --version')
 
-   call s:output( substitute(v, '\n$', '', '') )
 
- endfunction
 
- function! s:grep_version()
 
-   let v = system(g:gitgutter_grep.' --version')
 
-   call s:output( substitute(v, '\n$', '', '') )
 
-   let v = system(g:gitgutter_grep.' --help')
 
-   call s:output( substitute(v, '\%x00', '', 'g') )
 
- endfunction
 
- function! s:option(name)
 
-   if exists('+' . a:name)
 
-     let v = eval('&' . a:name)
 
-     call s:output(a:name . '=' . v)
 
-     " redir => output
 
-     "   silent execute "verbose set " . a:name . "?"
 
-     " redir END
 
-     " call s:output(a:name . '=' . output)
 
-   else
 
-     call s:output(a:name . ' [n/a]')
 
-   end
 
- endfunction
 
- function! s:output(text)
 
-   call append(line('$'), a:text)
 
- endfunction
 
- " assumes optional args are calling function's optional args
 
- function! gitgutter#debug#log(message, ...) abort
 
-   if g:gitgutter_log
 
-     if s:new_log_session && gitgutter#async#available()
 
-       if exists('*ch_logfile')
 
-         call ch_logfile(s:channel_log, 'w')
 
-       endif
 
-     endif
 
-     execute 'redir >> '.s:log_file
 
-       if s:new_log_session
 
-         let s:start = reltime()
 
-         silent echo "\n==== start log session ===="
 
-       endif
 
-       let elapsed = reltimestr(reltime(s:start)).' '
 
-       silent echo ''
 
-       " callers excluding this function
 
-       silent echo elapsed.expand('<sfile>')[:-22].':'
 
-       silent echo elapsed.s:format_for_log(a:message)
 
-       if a:0 && !empty(a:1)
 
-         for msg in a:000
 
-           silent echo elapsed.s:format_for_log(msg)
 
-         endfor
 
-       endif
 
-     redir END
 
-     let s:new_log_session = 0
 
-   endif
 
- endfunction
 
- function! s:format_for_log(data) abort
 
-   if type(a:data) == 1
 
-     return join(split(a:data,'\n'),"\n")
 
-   elseif type(a:data) == 3
 
-     return '['.join(a:data,"\n").']'
 
-   else
 
-     return a:data
 
-   endif
 
- endfunction
 
 
  |