mirror of
https://github.com/airblade/vim-gitgutter.git
synced 2025-11-08 11:33:48 -05:00
Reuse tempfile base names
This reverts "Use fresh temp files for every diff" [1]. At the time I
did not realise that Vim never checks the existence of its temp
directory after creating it at startup; I thought that each call to
tempname() generated a fresh file on disk. In fact tempname() simply
generates a string path.
Therefore there is no point calling tempname() for every diff. Doing so
only serves to generate more files in the temp directory than necessary.
[1] dab840b153
This commit is contained in:
@@ -12,6 +12,8 @@ endfunction
|
|||||||
|
|
||||||
let s:c_flag = s:git_supports_command_line_config_override()
|
let s:c_flag = s:git_supports_command_line_config_override()
|
||||||
|
|
||||||
|
let s:temp_from = tempname()
|
||||||
|
let s:temp_buffer = tempname()
|
||||||
let s:counter = 0
|
let s:counter = 0
|
||||||
|
|
||||||
" Returns a diff of the buffer against the index or the working tree.
|
" Returns a diff of the buffer against the index or the working tree.
|
||||||
@@ -75,9 +77,6 @@ function! gitgutter#diff#run_diff(bufnr, from, preserve_full_diff) abort
|
|||||||
throw 'gitgutter not tracked'
|
throw 'gitgutter not tracked'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let temp_from = tempname()
|
|
||||||
let temp_buffer = tempname()
|
|
||||||
|
|
||||||
" Wrap compound commands in parentheses to make Windows happy.
|
" Wrap compound commands in parentheses to make Windows happy.
|
||||||
" bash doesn't mind the parentheses.
|
" bash doesn't mind the parentheses.
|
||||||
let cmd = '('
|
let cmd = '('
|
||||||
@@ -90,7 +89,7 @@ function! gitgutter#diff#run_diff(bufnr, from, preserve_full_diff) abort
|
|||||||
" second gitgutter#process_buffer() writing the file (synchronously, below)
|
" second gitgutter#process_buffer() writing the file (synchronously, below)
|
||||||
" and the first gitgutter#process_buffer()'s async job reading it (with
|
" and the first gitgutter#process_buffer()'s async job reading it (with
|
||||||
" git-diff).
|
" git-diff).
|
||||||
let buff_file = temp_buffer.'.'.a:bufnr
|
let buff_file = s:temp_buffer.'.'.a:bufnr
|
||||||
|
|
||||||
" Add a counter to avoid a similar race with two quick writes of the same buffer.
|
" Add a counter to avoid a similar race with two quick writes of the same buffer.
|
||||||
" Use a modulus greater than a maximum reasonable number of visible buffers.
|
" Use a modulus greater than a maximum reasonable number of visible buffers.
|
||||||
@@ -110,7 +109,7 @@ function! gitgutter#diff#run_diff(bufnr, from, preserve_full_diff) abort
|
|||||||
" Without the buffer number, from_file would have a race in the shell
|
" Without the buffer number, from_file would have a race in the shell
|
||||||
" between the second process writing it (with git-show) and the first
|
" between the second process writing it (with git-show) and the first
|
||||||
" reading it (with git-diff).
|
" reading it (with git-diff).
|
||||||
let from_file = temp_from.'.'.a:bufnr
|
let from_file = s:temp_from.'.'.a:bufnr
|
||||||
|
|
||||||
" Add a counter to avoid a similar race with two quick writes of the same buffer.
|
" Add a counter to avoid a similar race with two quick writes of the same buffer.
|
||||||
let from_file .= '.'.s:counter
|
let from_file .= '.'.s:counter
|
||||||
|
|||||||
Reference in New Issue
Block a user