Select Git revision
magit.vim 28.63 KiB
scriptencoding utf-8
if exists('g:loaded_magit') || !executable('git') || &cp
finish
endif
let g:loaded_magit = 1
" Initialisation {{{
" FIXME: find if there is a minimum vim version required
" if v:version < 703
" endif
" source common file. variables in common file are shared with plugin and
" syntax files
execute 'source ' . resolve(expand('<sfile>:p:h')) . '/../common/magit_common.vim'
" g:magit_buffer_name: vim buffer name for vimagit
let g:magit_buffer_name = "magit-playground"
let s:state = deepcopy(magit#state#state)
" these mappings are broadly applied, for all vim buffers
let g:magit_show_magit_mapping = get(g:, 'magit_show_magit_mapping', '<leader>M' )
" these mapping are applied locally, for magit buffer only
let g:magit_stage_file_mapping = get(g:, 'magit_stage_file_mapping', 'F' )
let g:magit_stage_hunk_mapping = get(g:, 'magit_stage_hunk_mapping', 'S' )
let g:magit_stage_line_mapping = get(g:, 'magit_stage_line_mapping', 'L' )
let g:magit_mark_line_mapping = get(g:, 'magit_mark_line_mapping', 'M' )
let g:magit_discard_hunk_mapping = get(g:, 'magit_discard_hunk_mapping', 'DDD' )
let g:magit_commit_mapping_command = get(g:, 'magit_commit_mapping_command', 'w<cr>' )
let g:magit_commit_mapping = get(g:, 'magit_commit_mapping', 'CC' )
let g:magit_commit_amend_mapping = get(g:, 'magit_commit_amend_mapping', 'CA' )
let g:magit_commit_fixup_mapping = get(g:, 'magit_commit_fixup_mapping', 'CF' )
let g:magit_reload_mapping = get(g:, 'magit_reload_mapping', 'R' )
let g:magit_ignore_mapping = get(g:, 'magit_ignore_mapping', 'I' )
let g:magit_close_mapping = get(g:, 'magit_close_mapping', 'q' )
let g:magit_toggle_help_mapping = get(g:, 'magit_toggle_help_mapping', 'h' )
let g:magit_folding_toggle_mapping = get(g:, 'magit_folding_toggle_mapping', [ '<CR>' ])
let g:magit_folding_open_mapping = get(g:, 'magit_folding_open_mapping', [ 'zo', 'zO' ])
let g:magit_folding_close_mapping = get(g:, 'magit_folding_close_mapping', [ 'zc', 'zC' ])
" user options
let g:magit_enabled = get(g:, 'magit_enabled', 1)
let g:magit_show_help = get(g:, 'magit_show_help', 1)
let g:magit_default_show_all_files = get(g:, 'magit_default_show_all_files', 0)
let g:magit_default_fold_level = get(g:, 'magit_default_fold_level', 1)
let g:magit_warning_max_lines = get(g:, 'magit_warning_max_lines', 10000)
execute "nnoremap <silent> " . g:magit_show_magit_mapping . " :call magit#show_magit('v')<cr>"
" }}}
" {{{ Internal functions
" s:magit_inline_help: Dict containing inline help for each section
let s:magit_inline_help = {
\ 'staged': [
\'S if cursor on filename header, unstage file',
\' if cursor in hunk, unstage hunk',
\'F if cursor on filename header or hunk, unstage whole file',
\],
\ 'unstaged': [
\'S if cursor on filename header, stage file',
\' if cursor in hunk, stage hunk',
\' if visual selection in hunk (with v), stage selection',
\' if lines marked in hunk (with M), stage marked lines',
\'L stage the line under the cursor',