aboutsummaryrefslogtreecommitdiffstats
path: root/bundle
diff options
context:
space:
mode:
Diffstat (limited to 'bundle')
-rw-r--r--bundle/buffer-delete/autoload/buffer_delete.vim11
-rw-r--r--bundle/buffer-delete/plugin/buffer_delete.vim6
2 files changed, 17 insertions, 0 deletions
diff --git a/bundle/buffer-delete/autoload/buffer_delete.vim b/bundle/buffer-delete/autoload/buffer_delete.vim
new file mode 100644
index 0000000..316cfe8
--- /dev/null
+++ b/bundle/buffer-delete/autoload/buffer_delete.vim
@@ -0,0 +1,11 @@
+" Delete all unloaded buffers. These are buffers that aren't active or hidden.
+" Usually they come from a reinitialised session.
+function! buffer_delete#Unloaded()
+ let all = range(1, bufnr('$'))
+ let unloaded = filter(all, {_i, v -> !bufloaded(v)})
+
+ for i in unloaded
+ " Use silent because some buffer numbers may not exist.
+ silent! execute 'bdelete ' . i
+ endfor
+endfunction
diff --git a/bundle/buffer-delete/plugin/buffer_delete.vim b/bundle/buffer-delete/plugin/buffer_delete.vim
new file mode 100644
index 0000000..23e7487
--- /dev/null
+++ b/bundle/buffer-delete/plugin/buffer_delete.vim
@@ -0,0 +1,6 @@
+if exists('g:loaded_buffer_delete')
+ finish
+endif
+let g:loaded_buffer_delete = 1
+
+command! BufferDeleteUnloaded call buffer_delete#Unloaded()