diff --git a/autoload/magit/state.vim b/autoload/magit/state.vim index 032416eacd461d1ef8b82abd57206c605157e2a8..cd626db68bcf68f4615d038275bf47bd3cbf8ee1 100644 --- a/autoload/magit/state.vim +++ b/autoload/magit/state.vim @@ -199,6 +199,17 @@ function! magit#state#add_file(mode, status, filename, depth) dict endif endfunction +function! magit#state#get_files_lines() dict + let lines = {} + for diff_dict_mode in values(self.dict) + for file in values(diff_dict_mode) + let lines[file.filename] = magit#sign#get_lines( + \ file.sign_start, file.sign_end) + endfor + endfor + return lines +endfunction + " magit#state#update: update self.dict " if a file does not exists anymore (because all its changes have been " committed, deleted, discarded), it is removed from g:mg_diff_dict @@ -284,6 +295,7 @@ let magit#state#state = { \ 'add_file': function("magit#state#add_file"), \ 'set_files_visible': function("magit#state#set_files_visible"), \ 'update': function("magit#state#update"), + \ 'get_files_lines': function("magit#state#get_files_lines"), \ 'dict': { 'staged': {}, 'unstaged': {}}, \ } diff --git a/autoload/magit/utils.vim b/autoload/magit/utils.vim index 6be7df154753667583c371fe83f5179291682185..1a0bf63441731433f9364c40be60b83b521ce2c7 100644 --- a/autoload/magit/utils.vim +++ b/autoload/magit/utils.vim @@ -173,3 +173,30 @@ endfunction function! magit#utils#bufnr() return s:bufnr endfunction + +function! magit#utils#set_debug() + echom "Log into " . g:magit_log_file + execute "edit " . g:magit_log_file + execute '%delete _' + write! + let g:magit_debug = 1 +endfunction + +function! magit#utils#debug_cmd(cmd) + if ( g:magit_debug != 0 ) + execute "a:cmd" + endif +endfunc + +function! magit#utils#debug_log(message) + if ( g:magit_debug != 0 ) + if ( type(a:message) == type("") ) + let msg = split(a:message, '\n') + elseif ( type(a:message) == type({}) ) + let msg = split(string(a:message), '\n') + else + let msg = a:message + endif + call magit#utils#append_file(g:magit_log_file, msg) + endif +endfunction diff --git a/plugin/magit.vim b/plugin/magit.vim index 86078177b83b6ed03d983a2e1ba751a413aa58f8..2fbf30f4bbf6b380242e2a12edfc9016bfef8be5 100644 --- a/plugin/magit.vim +++ b/plugin/magit.vim @@ -50,6 +50,10 @@ let g:magit_default_fold_level = get(g:, 'magit_default_fold_level', let g:magit_warning_max_lines = get(g:, 'magit_warning_max_lines', 10000) + +let g:magit_debug = get(g:, 'magit_debug', 1) +let g:magit_log_file = get(g:, 'magit_log_file', '/tmp/vimagit.log') + execute "nnoremap <silent> " . g:magit_show_magit_mapping . " :call magit#show_magit('v')<cr>" " }}} @@ -834,4 +838,8 @@ endfunction command! Magit call magit#show_magit('v') +command! MagitDebugFilesLines call magit#utils#append_file(g:magit_log_file, magit#utils#flatten(items(s:state.get_files_lines()))) + +command! MagitDebug call magit#utils#set_debug() + " }}}