motiejus/dotfiles

Unnamed repository; edit this file 'description' to name the repository.
git clone https://git.jakstys.lt/motiejus/dotfiles.git
Log | Tree | Refs | README | LICENSE

commit cce9ca09336fcc99efdc7ce5f0fc12eee1412ecc (tree)
parent 0a536ed5af3d9814522a5c437ed546229e5351b7
Author: Tim Pope <code@tpope.net>
Date:   Thu,  8 Aug 2019 21:02:19 -0400

Move select temp file configuration to BufReadPre

This allows the natural machinery to kick in rather than invoking
FugitiveDetect() and fugitive#MapJumps() explicitly.

Diffstat:
Mautoload/fugitive.vim | 39+++++++++++++++++++++------------------
1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim @@ -2071,38 +2071,41 @@ function! s:TempState(...) abort return get(s:temp_files, s:cpath(fnamemodify(a:0 ? a:1 : @%, ':p')), {}) endfunction -function! s:SetupTemp(file) abort +function! s:TempReadPre(file) abort + if has_key(s:temp_files, s:cpath(a:file)) + let dict = s:temp_files[s:cpath(a:file)] + setlocal nomodeline + setlocal bufhidden=delete nobuflisted + setlocal buftype=nowrite + if has_key(dict, 'modifiable') + let &l:modifiable = dict.modifiable + endif + if len(dict.dir) + let b:git_dir = dict.dir + call extend(b:, {'fugitive_type': 'temp'}, 'keep') + endif + endif +endfunction + +function! s:TempReadPost(file) abort if has_key(s:temp_files, s:cpath(a:file)) let dict = s:temp_files[s:cpath(a:file)] if has_key(dict, 'filetype') && dict.filetype !=# &l:filetype let &l:filetype = dict.filetype endif setlocal foldmarker=<<<<<<<,>>>>>>> - setlocal bufhidden=delete nobuflisted - setlocal buftype=nowrite - setlocal nomodeline if empty(mapcheck('q', 'n')) nnoremap <buffer> <silent> q :<C-U>bdelete<Bar>echohl WarningMsg<Bar>echo "Temp file q is deprecated in favor of the built-in <Lt>C-W>q"<Bar>echohl NONE<CR> endif exe 'nnoremap <buffer> <silent>' s:nowait "gq :<C-U>bdelete<CR>" - if getline(1) !~# '^diff ' - setlocal nomodifiable - endif - if len(dict.dir) - let b:git_dir = dict.dir - call extend(b:, {'fugitive_type': 'temp'}, 'keep') - call FugitiveDetect(a:file) - if &filetype ==# 'git' - call fugitive#MapJumps() - endif - endif endif return '' endfunction augroup fugitive_temp autocmd! - autocmd BufNewFile,BufReadPost * exe s:SetupTemp(expand('<amatch>:p')) + autocmd BufReadPre * exe s:TempReadPre( expand('<amatch>:p')) + autocmd BufReadPost * exe s:TempReadPost(expand('<amatch>:p')) augroup END " Section: :Git @@ -3926,7 +3929,7 @@ function! s:OpenExec(cmd, mods, args, ...) abort \ (&shell =~# 'csh' ? ' >& ' . temp : ' > ' . temp . ' 2>&1') redraw! let temp = s:Resolve(temp) - let s:temp_files[s:cpath(temp)] = { 'dir': dir, 'filetype': 'git' } + let s:temp_files[s:cpath(temp)] = { 'dir': dir, 'filetype': 'git', 'modifiable': get(readfile(temp, 1), '') =~# '^diff ' } if a:cmd ==# 'edit' call s:BlurStatus() endif @@ -4645,7 +4648,7 @@ function! s:BlameCommand(line1, line2, range, count, bang, mods, reg, arg, args) return s:BlameCommit(edit, get(readfile(temp), 0, ''), bufnr('')) else let temp = s:Resolve(temp) - let s:temp_files[s:cpath(temp)] = {'dir': s:Dir(), 'filetype': 'fugitiveblame', 'args': cmd} + let s:temp_files[s:cpath(temp)] = {'dir': s:Dir(), 'filetype': 'fugitiveblame', 'args': cmd, 'modifiable': 0} for winnr in range(winnr('$'),1,-1) if getwinvar(winnr, '&scrollbind') call setwinvar(winnr, '&scrollbind', 0)