Added Subversion post-commit script for vim.
[profile.git] / .vim / script / svn
diff --git a/.vim/script/svn b/.vim/script/svn
new file mode 100644 (file)
index 0000000..c47f218
--- /dev/null
@@ -0,0 +1,37 @@
+" $Id$
+" Define the function we'll use.  It's easier to do this than to faff about 
+" trying to run a sequence of normal mode commands.
+fun! SVNcommit()
+  " Allow closing an unmodified spec.
+  set nomod
+
+  " Create a new window, move it below the spec and read in a diff.
+  botright new
+  r!svn diff
+  setf diff
+
+  " Delete the blank line left above the diff.
+  1
+  delete
+  se nobuflisted
+  set buftype=nofile
+  set bufhidden=hide
+  setlocal noswapfile
+
+  " Switch back to the top window.
+  wincmd k
+endfun
+
+" Expand the command line window so we don't have to press RETURN later.
+let s:cmdheight = &cmdheight
+se cmdheight=2
+
+" Call and then discard our function.
+call SVNcommit()
+delfunction SVNcommit
+
+" Restore the command window.
+exe "se cmdheight=" . s:cmdheight
+
+" Close the scratch buffer.
+au BufWinLeave <buffer=1> qa!