diff --git a/README.md b/README.md index ebe1aa2e68d1d8ff7a121c85f1af610835e0ede2..0d36951861dc5e9c05eeb74c15a287873434d6a3 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,22 @@ There are 5 sections: ### Commands -**:Magit** +#### magit#show_magit() + +Function to open magit buffer. +It takes 3 parameters: + * orientation (mandatory): it can be + - 'v', curent window is split vertically, and magit is displayed in new + buffer + - 'h', curent window is split horizontally, and magit is displayed in + new buffer + - 'c', magit is displayed in current buffer + * show_all_files: define is file diffs are shown by default for this session + (see [g:magit_default_show_all_files](#g_magit_default_show_all_files)) + * foldlevel: set default magit buffer foldlevel for this session + (see [g:magit_default_fold_level](#g_magit_default_fold_level)) + +#### :Magit * open magit buffer. ### Mappings @@ -176,11 +191,33 @@ Following mappings are set locally, for magit buffer only, in normal mode. User can define in its prefered |vimrc| some options. -To disable vimagit plugin -> let g:magit_enabled=0 +#### g:magit_enabled + +To enable or disable vimagit plugin. +Default value is 1. +> let g:magit_enabled=[01] + +#### g:magit_show_help + +To disable chatty inline help in magit buffer (default 1) +> let g:magit_show_help=[01] + +#### g:magit_default_show_all_files + +When this variable is set to 0, all diff files are hidden by default. +When this variable is set to 1, all diff files are shown by default. +Default value is 0. +NB: for repository with large number of differences, display may be slow. +> let g:magit_default_show_all_files=[01] + +#### g:magit_default_fold_level -To disable chatty inline help in magit buffer -> let g:magit_show_help=0 +Default foldlevel for magit buffer. +When set to 0, both filenames and hunks are folded. +When set to 1, filenames are unfolded and hunks are folded. +When set to 2, filenames and hunks are unfolded. +Default value is 1. +> let g:magit_default_fold_level=[012] ## Installation diff --git a/autoload/magit/state.vim b/autoload/magit/state.vim index c7b7d03a432feb25349145921701be6361107889..160bd2562dc2ae2930d0113891a83655942cd306 100644 --- a/autoload/magit/state.vim +++ b/autoload/magit/state.vim @@ -88,7 +88,7 @@ function! magit#state#get_file(mode, filename, ...) dict let create = ( a:0 == 1 ) ? a:1 : 0 if ( file_exists == 0 && create == 1 ) let self.dict[a:mode][a:filename] = deepcopy(s:file_template) - let self.dict[a:mode][a:filename].visible = 0 + let self.dict[a:mode][a:filename].visible = b:magit_default_show_all_files elseif ( file_exists == 0 && create == 0 ) throw 'file_doesnt_exists' endif diff --git a/doc/vimagit.txt b/doc/vimagit.txt index 497c346ebdf48d0faff9e6f72eb4eb5c919ff088..78cbdfefd9119ac9bb4344dd3b360d14bdfe57a3 100644 --- a/doc/vimagit.txt +++ b/doc/vimagit.txt @@ -112,6 +112,20 @@ INLINE MODIFICATIONS *vimagit-inline-modification* COMMANDS *vimagit-commands* + *magit#show_magit()* +Function to open magit buffer. +It takes 3 parameters: + * orientation (mandatory): it can be + - 'v', curent window is split vertically, and magit is displayed in new + buffer + - 'h', curent window is split horizontally, and magit is displayed in + new buffer + - 'c', magit is displayed in current buffer + * show_all_files: define is file diffs are shown by default for this session + (see |vimagit-g:magit_default_show_all_files|) + * foldlevel: set default magit buffer foldlevel for this session + (see |vimagit-g:magit_default_fold_level|) + *:Magit* *magit#show_magit('v')* :Magit open magit buffer @@ -239,12 +253,28 @@ Following mappings are set locally, for magit buffer only, in normal mode. User can define in its prefered |vimrc| some options. *vimagit-g:magit_enabled* -To disable vimagit plugin -let g:magit_enabled=0 +To enable or disable vimagit plugin. +Default value is 1. +let g:magit_enabled=[01] *vimagit-g:magit_show_help* -To disable chatty inline help in magit buffer -let g:magit_show_help=0 +To disable chatty inline help in magit buffer (default 1) +let g:magit_show_help=[01] + + *vimagit-g:magit_default_show_all_files* +When this variable is set to 0, all diff files are hidden by default. +When this variable is set to 1, all diff files are shown by default. +Default value is 0. +NB: for repository with large number of differences, display may be slow. +let g:magit_default_show_all_files=[01] + + *vimagit-g:magit_default_fold_level* +Default foldlevel for magit buffer. +When set to 0, both filenames and hunks are folded. +When set to 1, filenames are unfolded and hunks are folded. +When set to 2, filenames and hunks are unfolded. +Default value is 1. +let g:magit_default_fold_level=[012] =============================================================================== 6. FAQ *vimagit-FAQ* diff --git a/plugin/magit.vim b/plugin/magit.vim index bf5eb4a4035b6589f1b5e999eaa71b495dbb7edd..addd4135c3ea21f8fbc0c12187bce7a17a507208 100644 --- a/plugin/magit.vim +++ b/plugin/magit.vim @@ -59,6 +59,8 @@ call s:set('g:magit_folding_close_mapping', [ 'zc', 'zC' ]) " user options call s:set('g:magit_enabled', 1) call s:set('g:magit_show_help', 1) +call s:set('g:magit_default_show_all_files', 0) +call s:set('g:magit_default_fold_level', 1) execute "nnoremap <silent> " . g:magit_show_magit_mapping . " :call magit#show_magit('v')<cr>" " }}} @@ -617,7 +619,7 @@ endfunction " 'v': vertical split " 'h': horizontal split " 'c': current buffer (should be used when opening vim in vimagit mode -function! magit#show_magit(display) +function! magit#show_magit(display, ...) if ( magit#utils#strip(system("git rev-parse --is-inside-work-tree")) != 'true' ) echoerr "Magit must be started from a git repository" return @@ -631,17 +633,28 @@ function! magit#show_magit(display) else throw 'parameter_error' endif + + let b:magit_default_show_all_files = g:magit_default_show_all_files + let b:magit_default_fold_level = g:magit_default_fold_level + + if ( a:0 > 0 ) + let b:magit_default_show_all_files = a:1 + endif + if ( a:0 > 1 ) + let b:magit_default_fold_level = a:2 + endif + + silent! execute "bdelete " . g:magit_buffer_name + execute "file " . g:magit_buffer_name + setlocal buftype=nofile setlocal bufhidden=delete setlocal noswapfile setlocal foldmethod=syntax - setlocal foldlevel=1 + let &l:foldlevel = b:magit_default_fold_level setlocal filetype=magit "setlocal readonly - silent! execute "bdelete " . g:magit_buffer_name - execute "file " . g:magit_buffer_name - call magit#utils#setbufnr(bufnr(g:magit_buffer_name)) call magit#sign#init()