summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vim/ftplugin/svn.vim60
1 files changed, 60 insertions, 0 deletions
diff --git a/.vim/ftplugin/svn.vim b/.vim/ftplugin/svn.vim
new file mode 100644
index 0000000..e3eec77
--- /dev/null
+++ b/.vim/ftplugin/svn.vim
@@ -0,0 +1,60 @@
+" made by Michael Scherer ( misc@mandrake.org )
+" $Id: svn.vim 282 2005-01-31 21:24:55Z misc $
+"
+" 2004-09-13 : Lukas Ruf ( lukas.ruf@lpr.ch )
+" - re-ordered windows
+" - set focus on svn-commit.tmp (that's where one has to write)
+" - set buffer type of new window to 'nofile' to fix 'TODO'
+"
+" 2005-01-31 :
+" - autoclose on exit, thanks to Gintautas Miliauskas ( gintas@akl.lt )
+" and tips from Marius Gedminas ( mgedmin@b4net.lt )
+"
+" 2005-02-08 :
+" - rewrite in pure vim function, from Kyosuke Takayama ( support@mc.neweb.ne.jp )
+" - simplified installation instruction, from Marius Gedminas ( mgedmin@b4net.lt )
+"
+" 2005-02-11 :
+" - reindent with space, asked by Marius Gedminas ( mgedmin@b4net.lt )
+" - do not preview if no file are diffed, patch from Marius Gedminas.
+"
+" to use it, place it in ~/.vim/ftplugins ( create the directory if it doesn't exist )
+
+function! Svn_diff_windows()
+ let i = 0
+ let list_of_files = ''
+
+ while i <= line('$')
+ let line = getline(i)
+ if line =~ '^M'
+ let file = substitute(line, '\v^MM?\s*(.*)\s*$', '\1', '')
+ let list_of_files = list_of_files . ' '.file
+ endif
+ if line =~ '^A'
+ let file = substitute(line, '\v^A\s*(.*)\s*$', '\1', '')
+ let list_of_files = list_of_files . ' '.file
+ endif
+
+ let i = i + 1
+ endwhile
+
+ if list_of_files == ""
+ return
+ endif
+
+ vnew
+ silent! setlocal ft=diff previewwindow bufhidden=delete nobackup noswf nobuflisted nowrap buftype=nofile
+ exe 'normal :r!LANG=C svn diff ' . list_of_files . "\n"
+ setlocal nomodifiable
+ goto 1
+ redraw!
+ wincmd R
+ wincmd p
+ goto 1
+ redraw!
+endfunction
+
+set nowarn
+
+call Svn_diff_windows()
+set nowb