From a871d857d079bef8e610cc8d30b9c3b5abd22e79 Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Fri, 15 Jan 2016 11:04:16 +0000 Subject: [PATCH] Prevent buffer numbers from rapidly increasing. Instead of creating two new temporary files every time a realtime diff is performed, reuse the same two temporary files (per file extension). This stops the plugin using hundreds of different temporary files. Since the plugin now only uses a handful of temporary files we do not need to wipeout the unlisted buffer created by vim for each index-blob's temporary file. In turn this means vim no longer needs hundreds of unlisted buffers, so the next-available-buffer-number stays at sensible levels. See #297. --- autoload/gitgutter/diff.vim | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/autoload/gitgutter/diff.vim b/autoload/gitgutter/diff.vim index 4bd587e..b1134ba 100644 --- a/autoload/gitgutter/diff.vim +++ b/autoload/gitgutter/diff.vim @@ -11,6 +11,9 @@ let s:hunk_re = '^@@ -\(\d\+\),\?\(\d*\) +\(\d\+\),\?\(\d*\) @@' let s:fish = &shell =~# 'fish' +let s:temp_index = tempname() +let s:temp_buffer = tempname() + " Returns a diff of the buffer. " " The way to get the diff depends on whether the buffer is saved or unsaved. @@ -61,8 +64,8 @@ function! gitgutter#diff#run_diff(realtime, use_external_grep) if a:realtime let blob_name = ':'.gitgutter#utility#shellescape(gitgutter#utility#file_relative_to_repo_root()) - let blob_file = tempname() - let buff_file = tempname() + let blob_file = s:temp_index + let buff_file = s:temp_buffer let extension = gitgutter#utility#extension() if !empty(extension) let blob_file .= '.'.extension @@ -118,7 +121,6 @@ function! gitgutter#diff#run_diff(realtime, use_external_grep) if a:realtime call delete(blob_file) call delete(buff_file) - execute 'keepalt silent! bwipeout' buff_file endif if gitgutter#utility#shell_error()