From 032cdfc6c9ec26d5947a2b2a8dc31bbf79f90ae1 Mon Sep 17 00:00:00 2001 From: Stefan Liebl Date: Tue, 3 Jun 2014 11:59:29 +0200 Subject: [PATCH] + gvimmerge: opens a gvim with some tabs to resolve conflicts Change-Id: I5d797655d5f7f316f25acf13c9e9295fd3599893 --- vimfiles.stefan/doc/tags | 2 ++ vimfiles.stefan/doc/vimsuite.txt | 8 ++++++++ vimfiles.stefan/tools/gvimmerge.bat | 17 ++++++++++++++++ vimfiles.stefan/tools/gvimmerge.vim | 31 +++++++++++++++++++++++++++++ vimfiles.stefan/vimrc | 6 +++++- 5 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 vimfiles.stefan/tools/gvimmerge.bat create mode 100644 vimfiles.stefan/tools/gvimmerge.vim diff --git a/vimfiles.stefan/doc/tags b/vimfiles.stefan/doc/tags index 5144864..a0b94ef 100644 --- a/vimfiles.stefan/doc/tags +++ b/vimfiles.stefan/doc/tags @@ -60,8 +60,10 @@ DelAllMultipleEmptyLines vimsuite.txt /*DelAllMultipleEmptyLines* DelAllMultipleSameLines vimsuite.txt /*DelAllMultipleSameLines* DelAllTrailingWhitespace vimsuite.txt /*DelAllTrailingWhitespace* DirDiff vimsuite.txt /*DirDiff* +GVimMerge vimsuite.txt /*GVimMerge* GrepDir vimsuite.txt /*GrepDir* GrepFiles vimsuite.txt /*GrepFiles* +Merge vimsuite.txt /*Merge* Project vimsuite.txt /*Project* Projekt vimsuite.txt /*Projekt* Reformat vimsuite.txt /*Reformat* diff --git a/vimfiles.stefan/doc/vimsuite.txt b/vimfiles.stefan/doc/vimsuite.txt index bfae5f6..af23025 100644 --- a/vimfiles.stefan/doc/vimsuite.txt +++ b/vimfiles.stefan/doc/vimsuite.txt @@ -179,6 +179,14 @@ Alle Zeilen, die l *:InsertCHeader* :InsertCHeader Fügt das Template ... ein + *GVimMerge* *Merge* +gvimmerge Tool zur Unterstützung beim mergen + +Um GVim als Tool zum Mergen für eine Versionsverwaltung zu verwenden kann +dieser dort als Merge-Tool eingetragen werden. Der Eintrag sollte +folgendermaßen ausshen: +.../vimsuite/vimfiles.stefan/tools/gvimmerge.bat + ============================================================================== *cscope_macros* diff --git a/vimfiles.stefan/tools/gvimmerge.bat b/vimfiles.stefan/tools/gvimmerge.bat new file mode 100644 index 0000000..fe439e6 --- /dev/null +++ b/vimfiles.stefan/tools/gvimmerge.bat @@ -0,0 +1,17 @@ +@echo off +setlocal +set vimdir=%~dp0..\..\.. +set vimprg=%vimdir%\vim74\gvim.exe +set vimscript=%~dp0gvimmerge.vim +set base=%1 +set mine=%2 +set theirs=%3 +set merged=%4 + +if not exist %vimprg% ( + echo gvim.exe nicht gefunden +) + +set cmd=%vimprg% -f -R %base% %mine% %theirs% %merged% -S %vimscript% +echo %cmd% +%cmd% diff --git a/vimfiles.stefan/tools/gvimmerge.vim b/vimfiles.stefan/tools/gvimmerge.vim new file mode 100644 index 0000000..40d45c1 --- /dev/null +++ b/vimfiles.stefan/tools/gvimmerge.vim @@ -0,0 +1,31 @@ +function s:OpenDiffTab(left, right) + tabnew + execute 'buffer' a:left + diffthis + execute 'rightbelow vertical sbuffer' a:right + diffthis +endfunction + +function s:FixLineendings() + if !exists('b:reload_dos') && !&binary && &ff=='unix' && (0 < search('\r$', 'nc')) + edit ++ff=dos + echom 'fixed lineendings' + let b:reload_dos = 1 + endif +endfunction + +function s:OpenMergeTabs() + set columns=200 + call s:OpenDiffTab(1, 4) + call s:FixLineendings() + setlocal noreadonly modifiable + call s:OpenDiffTab(2, 4) + call s:OpenDiffTab(3, 4) + call s:OpenDiffTab(1, 2) + call s:OpenDiffTab(1, 3) + call s:OpenDiffTab(2, 3) + tabfirst + tabclose +endfunction + +call s:OpenMergeTabs() diff --git a/vimfiles.stefan/vimrc b/vimfiles.stefan/vimrc index 3fe7105..6be20da 100644 --- a/vimfiles.stefan/vimrc +++ b/vimfiles.stefan/vimrc @@ -156,7 +156,11 @@ nnoremap gb :call GotoLastFile() " ----------- set sessionoptions=blank,buffers,curdir,folds,help,resize,tabpages,winsize " open window size -autocmd GUIEnter * winsize 100 60 +if &diff + autocmd GUIEnter * set lines=60 columns=200 +else + autocmd GUIEnter * set lines=60 columns=100 +endif " read and write files automatically set autoread set autowrite