diff --git a/.gitignore b/.gitignore index 0bec46f..e02d3ff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /doc/tags /misc /test/*.actual +gitgutter.log + diff --git a/autoload/gitgutter.vim b/autoload/gitgutter.vim index e9dcc15..7fba0d9 100644 --- a/autoload/gitgutter.vim +++ b/autoload/gitgutter.vim @@ -25,6 +25,7 @@ function! gitgutter#process_buffer(bufnr, realtime) endif endif catch /diff failed/ + call gitgutter#debug#log('diff failed') call gitgutter#hunk#reset() endtry else @@ -34,6 +35,8 @@ endfunction function! gitgutter#handle_diff_job(job_id, data, event) + call gitgutter#debug#log('job_id: '.a:job_id.', event: '.a:event) + if a:event == 'stdout' " a:data is a list call gitgutter#utility#job_output_received(a:job_id, 'stdout') @@ -56,6 +59,8 @@ endfunction function! gitgutter#handle_diff(diff) + call gitgutter#debug#log(a:diff) + call setbufvar(gitgutter#utility#bufnr(), 'gitgutter_tracked', 1) call gitgutter#hunk#set_hunks(gitgutter#diff#parse_diff(a:diff)) diff --git a/autoload/gitgutter/debug.vim b/autoload/gitgutter/debug.vim index d5b4304..cd16018 100644 --- a/autoload/gitgutter/debug.vim +++ b/autoload/gitgutter/debug.vim @@ -1,3 +1,5 @@ +let s:log_file = expand(':p:h:h:h').'/'.'gitgutter.log' + function! gitgutter#debug#debug() " Open a scratch buffer vsplit __GitGutter_Debug__ @@ -70,8 +72,19 @@ function! gitgutter#debug#output(text) call append(line('$'), a:text) endfunction -function! gitgutter#debug#log(message) - let msg = type(a:message) == 1 ? split(a:message, '\n') : a:message - call writefile(msg, 'gitgutter.log', 'a') +" assumes optional args are calling function's optional args +function! gitgutter#debug#log(message, ...) + if g:gitgutter_log + execute 'redir >> '.s:log_file + " callers excluding this function + silent echo "\n".expand('')[:-22].':' + silent echo type(a:message) == 1 ? join(split(a:message, '\n'),"\n") : a:message + if a:0 && !empty(a:1) + for msg in a:000 + silent echo type(msg) == 1 ? join(split(msg, '\n'),"\n") : msg + endfor + endif + redir END + endif endfunction diff --git a/autoload/gitgutter/diff.vim b/autoload/gitgutter/diff.vim index 88efe7f..1e3ccfd 100644 --- a/autoload/gitgutter/diff.vim +++ b/autoload/gitgutter/diff.vim @@ -134,9 +134,11 @@ function! gitgutter#diff#run_diff(realtime, preserve_full_diff) \ 'on_stderr': function('gitgutter#handle_diff_job'), \ 'on_exit': function('gitgutter#handle_diff_job') \ }) + call gitgutter#debug#log('[job_id: '.job_id.'] '.cmd) if job_id < 1 throw 'diff failed' endif + call gitgutter#utility#pending_job(job_id) return 'async' else diff --git a/autoload/gitgutter/utility.vim b/autoload/gitgutter/utility.vim index ef01410..c7b3ccb 100644 --- a/autoload/gitgutter/utility.vim +++ b/autoload/gitgutter/utility.vim @@ -121,6 +121,8 @@ function! gitgutter#utility#using_xolox_shell() endfunction function! gitgutter#utility#system(cmd, ...) + call gitgutter#debug#log(a:cmd, a:000) + if gitgutter#utility#using_xolox_shell() let options = {'command': a:cmd, 'check': 0} if a:0 > 0 diff --git a/plugin/gitgutter.vim b/plugin/gitgutter.vim index c3f27b4..608f73f 100644 --- a/plugin/gitgutter.vim +++ b/plugin/gitgutter.vim @@ -50,6 +50,7 @@ call s:set('g:gitgutter_diff_base', '') call s:set('g:gitgutter_map_keys', 1) call s:set('g:gitgutter_avoid_cmd_prompt_on_windows', 1) call s:set('g:gitgutter_async', 1) +call s:set('g:gitgutter_log', 0) call gitgutter#highlight#define_sign_column_highlight() call gitgutter#highlight#define_highlights()