diff options
| author | Mirek Kratochvil <miroslav.kratochvil@uni.lu> | 2025-07-17 15:29:52 +0200 |
|---|---|---|
| committer | Mirek Kratochvil <miroslav.kratochvil@uni.lu> | 2025-07-17 15:29:52 +0200 |
| commit | 44bd3e8c149f923aa82da77da03db3be13bca83e (patch) | |
| tree | ce4748fb2ac1fe2e615882b4b25eab2c44e65b54 /Main.hs | |
| parent | 960f316059281ba6a95b99069e192493e5ffddd2 (diff) | |
| download | werge-44bd3e8c149f923aa82da77da03db3be13bca83e.tar.gz werge-44bd3e8c149f923aa82da77da03db3be13bca83e.tar.bz2 | |
make spaces work properly, clean up everything
Diffstat (limited to 'Main.hs')
| -rw-r--r-- | Main.hs | 42 |
1 files changed, 27 insertions, 15 deletions
@@ -244,25 +244,31 @@ zeal Config {..} (Conflict m o y) = xs -> [Ok $ reverse xs] pops (m:ms) (y:ys) | m == y = (m :) <$> pops ms ys - | SpacesMy <- cfgSpaces + | cfgSpaceRetain == ResolveMy , Toks.space m , Toks.space y = (m :) <$> pops ms ys - | SpacesYour <- cfgSpaces + | cfgSpaceRetain == ResolveYour , Toks.space m , Toks.space y = (y :) <$> pops ms ys pops ms ys = ((ms, ys), []) zeal _ x = [x] resolveSpace Config {..} c@(Conflict m o y) - | not (all Toks.space $ concat [m, o, y]) - || cfgSpaces `elem` [SpacesNormal, SpacesConflict] = c + | not (all Toks.space $ concat [m, o, y]) = c | m == o && o == y = Ok o - | otherwise = - case cfgSpaces of - SpacesMy -> Ok m - SpacesOld -> Ok o - SpacesYour -> Ok y - _ -> error $ "spaces resolution error " ++ show cfgSpaces + | cfgSpaceRetain == ResolveMy = Ok m + | cfgSpaceRetain == ResolveOld = Ok o + | cfgSpaceRetain == ResolveYour = Ok y + | cfgSpaceResolution == SpaceNormal = c + | cmResolveSeparate cfgSpaceConflicts && m == o = Ok y + | cmResolveSeparate cfgSpaceConflicts && o == y = Ok m + | cmResolveOverlaps cfgSpaceConflicts && m == y = Ok m + | SpaceSpecial r <- cfgSpaceResolution = + case r of + ResolveMy -> Ok m + ResolveOld -> Ok o + ResolveYour -> Ok y + ResolveKeep -> c resolveSpace _ x = x expand :: Int -> [Merged] -> [Merged] @@ -280,12 +286,18 @@ expand n = go go (x:xs) = x : go xs resolve cfg@Config {..} c@(Conflict m o y) - | cfgSpaces /= SpacesNormal && all Toks.space (concat [m, o, y]) = - resolveSpace cfg c + | cfgSpaceResolution /= SpaceNormal + , all Toks.space (concat [m, o, y]) = resolveSpace cfg c | m == o && o == y = Ok o - | m == o && cfgResolveSeparate = Ok y - | o == y && cfgResolveSeparate = Ok m - | m == y && cfgResolveOverlaps = Ok m + | cmResolveSeparate cfgConflicts && m == o = Ok y + | cmResolveSeparate cfgConflicts && o == y = Ok m + | cmResolveOverlaps cfgConflicts && m == y = Ok m + | otherwise = + case cfgResolution of + ResolveMy -> Ok m + ResolveOld -> Ok o + ResolveYour -> Ok y + ResolveKeep -> c resolve _ x = x merge cfg@Config {..} ms ys = |
