commit 8df073165a40d5299ca24f0c2fccf6401dff46fd (tree)
parent 9bc425e94338fb1581db6cbd2a07686c2cc2a36e
Author: Tim Pope <code@tpope.net>
Date: Fri, 13 Jul 2018 16:06:42 -0400
Extract helper for robust tempname
Diffstat:
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim
@@ -46,6 +46,14 @@ function! s:fnameescape(file) abort
endif
endfunction
+function! s:tempname() abort
+ let temp = resolve(tempname())
+ if has('win32')
+ let temp = fnamemodify(fnamemodify(temp, ':h'), ':p').fnamemodify(temp, ':t')
+ endif
+ return temp
+endfunction
+
function! s:throw(string) abort
let v:errmsg = 'fugitive: '.a:string
throw v:errmsg
@@ -1572,10 +1580,7 @@ function! s:Edit(cmd, bang, mods, ...) abort
diffupdate
return 'redraw|echo '.string(':!'.git.' '.args)
else
- let temp = resolve(tempname())
- if has('win32')
- let temp = fnamemodify(fnamemodify(temp, ':h'), ':p').fnamemodify(temp, ':t')
- endif
+ let temp = s:tempname()
let s:temp_files[s:cpath(temp)] = { 'dir': buffer.repo().dir(), 'args': arglist }
silent execute mods a:cmd temp
if a:cmd =~# 'pedit'
@@ -2169,7 +2174,7 @@ function! s:Blame(bang,line1,line2,count,args) abort
if a:count
execute 'write !'.substitute(basecmd,' blame ',' blame -L '.a:line1.','.a:line2.' ','g')
else
- let error = resolve(tempname())
+ let error = s:tempname()
let temp = error.'.fugitiveblame'
if &shell =~# 'csh'
silent! execute '%write !('.basecmd.' > '.temp.') >& '.error
@@ -2209,9 +2214,6 @@ function! s:Blame(bang,line1,line2,count,args) abort
endif
let top = line('w0') + &scrolloff
let current = line('.')
- if has('win32')
- let temp = fnamemodify(fnamemodify(temp, ':h'), ':p').fnamemodify(temp, ':t')
- endif
let s:temp_files[s:cpath(temp)] = { 'dir': s:repo().dir(), 'args': cmd }
exe 'keepalt leftabove vsplit '.temp
let b:fugitive_blamed_bufnr = bufnr