aboutsummaryrefslogtreecommitdiff
path: root/Opts.hs
diff options
context:
space:
mode:
authorMirek Kratochvil <exa.exa@gmail.com>2025-07-17 22:21:23 +0200
committerMirek Kratochvil <exa.exa@gmail.com>2025-07-17 22:21:23 +0200
commit56cf7c69a948ee04100b8363206b51d680bc4664 (patch)
tree509cf89b749802cecc2cdd6866c2ef5ae1e4fec1 /Opts.hs
parent49fcd0ca44bc3dd49019386543e32e2189d39c7f (diff)
downloadwerge-56cf7c69a948ee04100b8363206b51d680bc4664.tar.gz
werge-56cf7c69a948ee04100b8363206b51d680bc4664.tar.bz2
have diffs (for good manners)
Diffstat (limited to 'Opts.hs')
-rw-r--r--Opts.hs25
1 files changed, 23 insertions, 2 deletions
diff --git a/Opts.hs b/Opts.hs
index dc6987f..dcb3330 100644
--- a/Opts.hs
+++ b/Opts.hs
@@ -110,6 +110,7 @@ data Config = Config
, cfgConflicts :: ConflictMask
, cfgLabelStart :: String
, cfgLabelMyOld :: String
+ , cfgLabelDiff :: String
, cfgLabelOldYour :: String
, cfgLabelEnd :: String
} deriving (Show)
@@ -154,10 +155,10 @@ config = do
$ long "expand-context"
<> short 'C'
<> metavar "N"
- <> value 1
+ <> value 2
<> showDefault
<> help
- "Consider changes that are at most N tokens apart to be a single change. Zero may cause bad resolutions of near conflicting edits"
+ "Consider changes that are at less than N tokens apart to be a single change; 0 turns off conflict expansion, 1 may cause bad resolutions of near conflicting edits"
cfgResolution <-
option (eitherReader resolutionMode)
$ long "resolve"
@@ -182,6 +183,11 @@ config = do
$ long "label-mo"
<> metavar "\"|||||\""
<> help "Separator of local edits and original"
+ labelDiff <-
+ optional . strOption
+ $ long "label-diff"
+ <> metavar "\"|||||\""
+ <> help "Separator for old and new version"
labelOldYour <-
optional . strOption
$ long "label-oy"
@@ -198,6 +204,8 @@ config = do
bool "<<<<<" "\ESC[1;37m<\ESC[0;31m" color `fromMaybe` labelStart
, cfgLabelMyOld =
bool "|||||" "\ESC[1;37m|\ESC[1;30m" color `fromMaybe` labelMyOld
+ , cfgLabelDiff =
+ bool "|||||" "\ESC[1;37m|\ESC[0;32m" color `fromMaybe` labelDiff
, cfgLabelOldYour =
bool "=====" "\ESC[1;37m=\ESC[0;32m" color `fromMaybe` labelOldYour
, cfgLabelEnd =
@@ -215,6 +223,10 @@ data Command
{ gmFiles :: Maybe [FilePath]
, gmDoAdd :: Bool
}
+ | CmdDiff
+ { diffOld :: FilePath
+ , diffNew :: FilePath
+ }
deriving (Show)
cmdDiff3 :: Parser Command
@@ -252,6 +264,12 @@ cmdGitMerge = do
]
pure CmdGitMerge {..}
+cmdDiff :: Parser Command
+cmdDiff = do
+ diffOld <- strArgument $ metavar "OLDFILE" <> help "Original file version"
+ diffNew <- strArgument $ metavar "NEWFILE" <> help "File version with changes"
+ pure CmdDiff {..}
+
-- TODO have some option to output the (partially merged) my/old/your files so
-- that folks can continue with external program or so (such as meld)
cmd :: Parser Command
@@ -264,6 +282,9 @@ cmd =
, command "git"
$ info cmdGitMerge
$ progDesc "Automerge unmerged files in git conflict"
+ , command "diff"
+ $ info cmdDiff
+ $ progDesc "Highlight differences between two files"
]
parseOpts :: IO (Config, Command)