diff options
| author | Mirek Kratochvil <miroslav.kratochvil@uni.lu> | 2025-10-14 14:07:40 +0200 |
|---|---|---|
| committer | Mirek Kratochvil <miroslav.kratochvil@uni.lu> | 2025-10-14 14:07:40 +0200 |
| commit | 10777c32f603c187316d2c1cacc665c7f34dd0b7 (patch) | |
| tree | 244722cfb82754d13a4aecfab3273e426151d140 | |
| parent | 6beaeec8e773d8494d084ce49d87c62929da5b2e (diff) | |
| download | werge-10777c32f603c187316d2c1cacc665c7f34dd0b7.tar.gz werge-10777c32f603c187316d2c1cacc665c7f34dd0b7.tar.bz2 | |
actually make the vim syntax work nicely + document it
| -rw-r--r-- | README.md | 13 | ||||
| -rw-r--r-- | vim/werge.vim | 29 | ||||
| -rw-r--r-- | vim/wergediff.vim | 8 |
3 files changed, 41 insertions, 9 deletions
@@ -42,6 +42,16 @@ In any other case, you may set up a path to any compatible `diff` and `patch` (or suitable wrapper scripts) via environment variables `WERGE_DIFF` and `WERGE_PATCH`. (If required, the same applies for `WERGE_GIT`.) +### Editor integration + +There's a `vim` syntax highlighting file in `vim/werge.vim`. To install, simply +copy it to your local `vim` syntax configuration directory (usually to +`~/.vim/syntax/werge.vim`). Then, you can activate the syntax in vim with: + +``` +:set syn=werge +``` + ## Demo ##### Original (`old` file): @@ -74,7 +84,8 @@ Violets are blue. Patching is hard.<<<<< I still||||| I===== I>>>>> cannot do verses. ``` -(NOTE: option `-G` gives nicely colored output that is much easier to read.) +(NOTE: option `-G` gives nicely colored output that is much easier to read. +Alternatively you can install the syntax highlighting for `vim`.) ##### Merge with separate space resultion Adding option `-s` to `werge merge` causes it to resolve space conflicts diff --git a/vim/werge.vim b/vim/werge.vim new file mode 100644 index 0000000..0997437 --- /dev/null +++ b/vim/werge.vim @@ -0,0 +1,29 @@ +" Vim syntax file +" Language: werge +" Maintainer: Mirek Kratochvil +" Last Change: Oct 14, 2025 +" Version: 1 +" URL: https://github.com/exaexa/werge + +" quit if a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" syntax for the werge files +syntax region wergeHunk start=/<<<<</ end=/>>>>>/ contains=wergeRm,wergeDiffAdd,wergeConflictOrigAdd +syntax region wergeRm start=/<<<<</hs=e+1 end=/|||||/he=s-1,me=s-1 contained +syntax match wergeDiffAdd /|||||\([^>=]\|>\{1,4\}>\@!\|=\{1,4\}=\@!\)*>>>>>/ms=s+5,me=e-5 contained +syntax match wergeConflictOrigAdd /|||||\([^=>]\|=\{1,4\}=\@!\|>\{1,4\}>\@!\)*=====\([^=>]\|=\{1,4\}=\@!\|>\{1,4\}>\@!\)*>>>>>/me=e-5 contained contains=wergeConflictOrig,wergeconflictAdd +syntax region wergeConflictOrig start=/|||||/hs=e+1 end=/=====/he=s-1,me=s-1 contained +syntax region wergeConflictAdd start=/=====/hs=e+1 end=/>>>>>/he=s-1,me=s-1 contained + +" color specification +highlight default link wergeHunk Comment +highlight default link wergeRm Removed +highlight default link wergeDiffAdd Added +highlight default link wergeConflictOrigAdd Comment +highlight default link wergeConflictOrig Changed +highlight default link wergeConflictAdd Added + +let b:current_syntax = "werge" diff --git a/vim/wergediff.vim b/vim/wergediff.vim deleted file mode 100644 index 6766e06..0000000 --- a/vim/wergediff.vim +++ /dev/null @@ -1,8 +0,0 @@ - -syntax region wergeDiffChange start=/<<<<</ end=/>>>>>/ contains=wergeDiffRm,wergeDiffAdd -syntax region wergeDiffRm start=/<<<<</hs=e+1 end=/|||||/he=b-1,me=b-1 contained -syntax region wergeDiffAdd start=/|||||/hs=e+1 end=/>>>>>/he=b-1,me=b-1 contained - -highlight default link wergeDiffChange Comment -highlight default link wergeDiffRm Removed -highlight default link wergeDiffAdd Added |
