diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim index 67560eb..5335496 100644 --- a/autoload/fugitive.vim +++ b/autoload/fugitive.vim @@ -2785,17 +2785,19 @@ function! fugitive#BufReadStatus() abort endtry endfunction -function! fugitive#FileRead() abort - let [dir, rev] = s:DirRev(expand('')) +function! fugitive#FileReadCmd(...) abort + let amatch = a:0 ? a:1 : expand('') + let [dir, rev] = s:DirRev(amatch) + let line = a:0 > 1 ? a:2 : line("'[") if empty(dir) - return "noautocmd '[read " + return 'noautocmd ' . line . 'read ' . s:fnameescape(amatch) endif if rev !~# ':' let cmd = fugitive#Prepare(dir, 'log', '--pretty=format:%B', '-1', rev) else let cmd = fugitive#Prepare(dir, 'cat-file', '-p', rev) endif - return "'[read !" . escape(cmd, '!#%') + return line . 'read !' . escape(cmd, '!#%') endfunction function! fugitive#BufReadIndex() abort diff --git a/plugin/fugitive.vim b/plugin/fugitive.vim index a916c9e..9b0e20f 100644 --- a/plugin/fugitive.vim +++ b/plugin/fugitive.vim @@ -179,11 +179,11 @@ augroup fugitive \ read | \ 1delete | \ endif - autocmd FileReadCmd fugitive://**//[0-3]/** exe fugitive#FileRead() - autocmd BufReadCmd fugitive://**//[0-3]/** exe fugitive#BufReadIndex() - autocmd BufWriteCmd fugitive://**//[0-3]/** exe fugitive#BufWriteIndex() - autocmd BufReadCmd fugitive://**//[0-9a-f][0-9a-f]* exe fugitive#BufReadObject() - autocmd FileReadCmd fugitive://**//[0-9a-f][0-9a-f]* exe fugitive#FileRead() + autocmd BufReadCmd fugitive://*//[0-3]/* exe fugitive#BufReadIndex() + autocmd BufWriteCmd fugitive://*//[0-3]/* exe fugitive#BufWriteIndex() + autocmd BufReadCmd fugitive://*//[0-9a-f][0-9a-f]* exe fugitive#BufReadObject() + autocmd FileReadCmd fugitive://*//* exe fugitive#FileReadCmd() + autocmd SourceCmd fugitive://*//* nested exe fugitive#SourceCmd() autocmd User Flags call Hoist('buffer', function('FugitiveStatusline')) augroup END