diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/uitext.ml | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/uitext.ml b/src/uitext.ml index 8eaa1ff..96fffa2 100644 --- a/src/uitext.ml +++ b/src/uitext.ml @@ -268,6 +268,7 @@ let interact prilist rilist = | {replicas = Different diff} -> diff.direction <- Conflict "skip requested" | _ -> () in + let ripred = ref None in let rec loop prev = let rec previous prev ril = match prev with @@ -295,6 +296,16 @@ let interact prilist rilist = loop (nukeIgnoredRis (ri::prev)) (nukeIgnoredRis ril) in (* This should work on most terminals: *) let redisplayri() = overwrite (); displayri ri; display "\n" in + let actOnMatching f = + (* [f] can have effects on the ri and return false to discard it *) + match !ripred with + | None -> if f ri + then begin redisplayri(); next() end + else begin newLine(); loop prev rest end + | Some test -> newLine(); + let filt = fun ri -> if test ri then f ri else true in + loop prev (ri::Safelist.filter filt rest) + in displayri ri; match ri.replicas with Problem s -> display "\n"; display s; display "\n"; next() |