diff --git a/README.md b/README.md index bfb2577515d2444eb80ffbd8647c8782cce94728..6ba4ac82f4813010eb571e62bc056747576b48e0 100644 --- a/README.md +++ b/README.md @@ -479,6 +479,14 @@ or a hunk is staged/unstaged). Default value is 1. > let g:magit_refresh_gitgutter=[01] +#### g:magit_auto_close + +When set to 1, magit buffer automatically closes after a commit if there is +nothing else to stage (which means that both Staged and Unstaged sections are +empty). +Default value is 0. +> let g:magit_auto_close=[01] + ## Requirements This part must be refined, I don't see any minimal version for git and vim, but for sure there should be one. diff --git a/doc/vimagit.txt b/doc/vimagit.txt index f442774db6d70010617c75cc5d4919f638d4f6dc..985e2e8840eaccf9f51dc0fe7f26a80bc4d85aa1 100644 --- a/doc/vimagit.txt +++ b/doc/vimagit.txt @@ -503,6 +503,13 @@ or a hunk is staged/unstaged). Default value is 1. let g:magit_refresh_gitgutter=[01] + *vimagit-g:magit_auto_close* +When set to 1, magit buffer automatically closes after a commit if there is +nothing else to stage (which means that both Staged and Unstaged sections are +empty). +Default value is 0. +let g:magit_auto_close=[01] + =============================================================================== 6. FAQ *vimagit-FAQ* diff --git a/plugin/magit.vim b/plugin/magit.vim index 9a872406d31e3ef32f481e3fc5adf44a86fb3b9c..a14b2d8d126604400203da7b5b3410fc49731687 100644 --- a/plugin/magit.vim +++ b/plugin/magit.vim @@ -26,6 +26,7 @@ let g:magit_enabled = get(g:, 'magit_enabled', let g:magit_show_help = get(g:, 'magit_show_help', 0) let g:magit_default_show_all_files = get(g:, 'magit_default_show_all_files', 1) let g:magit_default_fold_level = get(g:, 'magit_default_fold_level', 1) +let g:magit_auto_close = get(g:, 'magit_auto_close', 0) let g:magit_auto_foldopen = get(g:, 'magit_auto_foldopen', 1) let g:magit_default_sections = get(g:, 'magit_default_sections', ['info', 'global_help', 'commit', 'staged', 'unstaged']) let g:magit_discard_untracked_do_delete = get(g:, 'magit_discard_untracked_do_delete', 0) @@ -374,6 +375,7 @@ function! s:mg_git_commit(mode) abort let b:magit_current_commit_mode='' let b:magit_current_commit_msg=[] endif + let b:magit_just_commited = 1 endfunction " s:mg_select_file_block: select the whole diff file, relative to the current @@ -593,6 +595,15 @@ function! magit#update_buffer(...) call b:state.update() + if ( g:magit_auto_close == 1 && + \ b:magit_just_commited == 1 && + \ empty(b:state.get_filenames('staged')) && + \ empty(b:state.get_filenames('unstaged')) ) + let b:magit_just_commited = 0 + call magit#close_magit() + return + endif + for section in g:magit_default_sections try let func = s:mg_display_functions[section] @@ -798,6 +809,8 @@ function! magit#show_magit(display, ...) let b:magit_diff_context=3 + let b:magit_just_commited = 0 + call magit#utils#setbufnr(bufnr(buffer_name)) call magit#sign#init()