fix(search,git,go): honour the engines' own flag arbitration
Both engines settle `-h`/`-H` and `-n`/`-N` by last-one-wins; RTK's negation was an unconditional veto, so `grep TODO -h -H a.txt b.txt` printed bare lines where grep prints the filenames. DetectedFlags now records which spelling came last, `None` meaning the user said neither and the paths decide. `-N` joins `-h` in not being forwarded, for the same reason: RTK forces `-nH` to parse the output, and the user's negation would win and leave nothing parseable. `-e=PAT` gets the same `=`-unwrapping every other rg short flag already got, so the pattern is no longer searched for with a literal `=`. golangci: the json sink collides wherever it points -- one path per format -- while another format's *file* sink does not, so `--output.json.path /tmp/r.json` suppresses RTK's injection again and `--output.text.path /tmp/r.txt` no longer does. git, all checked against 2.53 rather than assumed: `--binary` re-enables the patch past `--no-patch --stat`, and a binary patch is meant to be fed back to `git apply`, so it takes the raw route; `-W`/`--function-context` does *not* re-enable it and is left alone; `-U<n>`/`-W` make `git log` emit a patch the one-line compaction cannot represent, and `--compact-summary` left an empty "Changes:" section, so both take the raw route too. `git show`'s diff step keeps the user's `-U5`, which sets the context width of the very patch RTK is about to compact -- stripping it there cost the user the context they asked for. And a `worktree` write action that reported something keeps its report: `prune --dry-run` names the worktrees it would remove, on stderr, and that list is the entire point of the command. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
N
Nicolas Le Cam committed
04001e086c65371c0213f8b8e49a2ce3ea796a9f
Parent: e507aa5