mirror of
https://github.com/amix/vimrc
synced 2025-06-30 11:54:59 +08:00
Updated plugins
This commit is contained in:
@ -248,7 +248,9 @@ function! s:hunk_op(op, ...)
|
||||
|
||||
let hunk_diff = join(hunk_header + hunk_body, "\n")."\n"
|
||||
|
||||
call s:goto_original_window()
|
||||
if &previewwindow
|
||||
call s:goto_original_window()
|
||||
endif
|
||||
call gitgutter#hunk#close_hunk_preview_window()
|
||||
call s:stage(hunk_diff)
|
||||
endif
|
||||
@ -460,18 +462,16 @@ function! s:open_hunk_preview_window()
|
||||
call nvim_buf_set_option(buf, 'swapfile', v:false)
|
||||
call nvim_buf_set_name(buf, 'gitgutter://hunk-preview')
|
||||
|
||||
if g:gitgutter_close_preview_on_escape
|
||||
let winnr = nvim_win_get_number(s:winid)
|
||||
execute winnr.'wincmd w'
|
||||
nnoremap <buffer> <silent> <Esc> :<C-U>call gitgutter#hunk#close_hunk_preview_window()<CR>
|
||||
wincmd w
|
||||
endif
|
||||
|
||||
" Assumes cursor is in original window.
|
||||
autocmd CursorMoved,TabLeave <buffer> ++once call gitgutter#hunk#close_hunk_preview_window()
|
||||
|
||||
if g:gitgutter_close_preview_on_escape
|
||||
" Map <Esc> to close the floating preview.
|
||||
nnoremap <buffer> <silent> <Esc> :<C-U>call gitgutter#hunk#close_hunk_preview_window()<CR>
|
||||
" Ensure that when the preview window is closed, the map is removed.
|
||||
autocmd User GitGutterPreviewClosed silent! nunmap <buffer> <Esc>
|
||||
autocmd CursorMoved <buffer> ++once silent! nunmap <buffer> <Esc>
|
||||
execute "autocmd WinClosed <buffer=".winbufnr(s:winid)."> doautocmd" s:nomodeline "User GitGutterPreviewClosed"
|
||||
endif
|
||||
|
||||
return
|
||||
endif
|
||||
|
||||
|
@ -19,7 +19,8 @@ function! gitgutter#utility#setbufvar(buffer, varname, val)
|
||||
endfunction
|
||||
|
||||
function! gitgutter#utility#getbufvar(buffer, varname, ...)
|
||||
let ggvars = getbufvar(a:buffer, 'gitgutter')
|
||||
let buffer = +a:buffer
|
||||
let ggvars = getbufvar(buffer, 'gitgutter')
|
||||
if type(ggvars) == type({}) && has_key(ggvars, a:varname)
|
||||
return ggvars[a:varname]
|
||||
endif
|
||||
|
@ -265,6 +265,35 @@ function! s:next_tick(cmd)
|
||||
call timer_start(1, {-> execute(a:cmd)})
|
||||
endfunction
|
||||
|
||||
function! s:on_buffilepre(bufnr)
|
||||
if !exists('s:renaming')
|
||||
let s:renaming = []
|
||||
let s:gitgutter_was_enabled = gitgutter#utility#getbufvar(a:bufnr, 'enabled')
|
||||
endif
|
||||
|
||||
let s:renaming += [a:bufnr]
|
||||
endfunction
|
||||
|
||||
function! s:on_buffilepost(bufnr)
|
||||
if len(s:renaming) > 1
|
||||
if s:renaming[0] != a:bufnr
|
||||
throw 'gitgutter rename error' s:renaming[0] a:bufnr
|
||||
endif
|
||||
unlet s:renaming[0]
|
||||
return
|
||||
endif
|
||||
|
||||
" reset cached values
|
||||
GitGutterBufferDisable
|
||||
|
||||
if s:gitgutter_was_enabled
|
||||
GitGutterBufferEnable
|
||||
endif
|
||||
|
||||
unlet s:renaming
|
||||
unlet s:gitgutter_was_enabled
|
||||
endfunction
|
||||
|
||||
" Autocommands {{{
|
||||
|
||||
augroup gitgutter
|
||||
@ -309,8 +338,8 @@ augroup gitgutter
|
||||
|
||||
autocmd ColorScheme * call gitgutter#highlight#define_highlights()
|
||||
|
||||
autocmd BufFilePre * let b:gitgutter_was_enabled = gitgutter#utility#getbufvar(expand('<abuf>'), 'enabled') | GitGutterBufferDisable
|
||||
autocmd BufFilePost * if b:gitgutter_was_enabled | GitGutterBufferEnable | endif | unlet b:gitgutter_was_enabled
|
||||
autocmd BufFilePre * call s:on_buffilepre(expand('<abuf>'))
|
||||
autocmd BufFilePost * call s:on_buffilepost(expand('<abuf>'))
|
||||
|
||||
autocmd QuickFixCmdPre *vimgrep* let b:gitgutter_was_enabled = gitgutter#utility#getbufvar(expand('<abuf>'), 'enabled') | GitGutterBufferDisable
|
||||
autocmd QuickFixCmdPost *vimgrep* if b:gitgutter_was_enabled | GitGutterBufferEnable | endif | unlet b:gitgutter_was_enabled
|
||||
|
@ -251,6 +251,35 @@ function Test_filename_umlaut()
|
||||
endfunction
|
||||
|
||||
|
||||
function Test_file_cmd()
|
||||
normal ggo*
|
||||
|
||||
file other.txt
|
||||
|
||||
call s:trigger_gitgutter()
|
||||
call assert_equal(1, b:gitgutter.enabled)
|
||||
call assert_equal('', b:gitgutter.path)
|
||||
call s:assert_signs([], 'other.txt')
|
||||
|
||||
write
|
||||
|
||||
call s:trigger_gitgutter()
|
||||
call assert_equal(-2, b:gitgutter.path)
|
||||
endfunction
|
||||
|
||||
|
||||
function Test_saveas()
|
||||
normal ggo*
|
||||
|
||||
saveas other.txt
|
||||
|
||||
call s:trigger_gitgutter()
|
||||
call assert_equal(1, b:gitgutter.enabled)
|
||||
call assert_equal(-2, b:gitgutter.path)
|
||||
call s:assert_signs([], 'other.txt')
|
||||
endfunction
|
||||
|
||||
|
||||
" FIXME: this test fails when it is the first (or only) test to be run
|
||||
function Test_follow_symlink()
|
||||
let tmp = 'symlink'
|
||||
|
Reference in New Issue
Block a user