aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/scratch_buffer.vim19
-rw-r--r--plugin/scratch_buffer.vim11
2 files changed, 29 insertions, 1 deletions
diff --git a/autoload/scratch_buffer.vim b/autoload/scratch_buffer.vim
index c0ef7cf..4051fa5 100644
--- a/autoload/scratch_buffer.vim
+++ b/autoload/scratch_buffer.vim
@@ -1,11 +1,28 @@
+" Entry point for :ScratchBuffer command
function! scratch_buffer#(mods, count, ...) abort
+
+ " Start building command argument vector
let command = []
+
+ " Add any modifiers first (e.g. :vertical)
call add(command, a:mods)
- if a:count
+
+ " If a count of more than zero was provided, add that as a prefix for :new
+ if a:count > 0
call add(command, a:count)
endif
+
+ " Add the :new command
call add(command, 'new')
+
+ " Add any other arguments passed in
call extend(command, a:000)
+
+ " Execute the command
execute join(command)
+
+ " Set the new buffer to a scratch 'buftype' to stop it from saving and to
+ " reassure Vim that it doesn't need to be saved
set buftype=nofile
+
endfunction
diff --git a/plugin/scratch_buffer.vim b/plugin/scratch_buffer.vim
index c209c8b..fe7a872 100644
--- a/plugin/scratch_buffer.vim
+++ b/plugin/scratch_buffer.vim
@@ -1,2 +1,13 @@
+"
+" scratch_buffer.vim: User command to open a scratch buffer.
+"
+" Author: Tom Ryder <tom@sanctum.geek.nz>
+" License: Same as Vim itself
+"
+if exists('loaded_alternate_filetypes') || &compatible
+ finish
+endif
+
+" Command to open scratch buffer
command! -bar -count=0 -nargs=* ScratchBuffer
\ call scratch_buffer#(<q-mods>, <q-count>, <f-args>)