From 54a428a6510a23fcc125b99a30aa0d5723a1e0c9 Mon Sep 17 00:00:00 2001 From: Jerome Reybert <jreybert@gmail.com> Date: Mon, 6 Nov 2017 13:26:10 +0100 Subject: [PATCH] Auto-close magit buffer/window on clean state Option is by default false fix #132 --- README.md | 8 ++++++++ doc/vimagit.txt | 7 +++++++ plugin/magit.vim | 13 +++++++++++++ 3 files changed, 28 insertions(+) diff --git a/README.md b/README.md index bfb2577..6ba4ac8 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 f442774..985e2e8 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 9a87240..a14b2d8 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() -- GitLab