summaryrefslogtreecommitdiffstats
path: root/.local/bin
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin')
-rwxr-xr-x.local/bin/subdiff24
1 files changed, 19 insertions, 5 deletions
diff --git a/.local/bin/subdiff b/.local/bin/subdiff
index 6bc7db3..92a3a78 100755
--- a/.local/bin/subdiff
+++ b/.local/bin/subdiff
@@ -1,6 +1,20 @@
#!/bin/bash
-sed \
- -e 's|^\(\x1b\[[0-9;]\+m\)\?+\(\x1b\[m\x1b\[[0-9;]\+m\)\?+|\x1b\[1;36m++|g' \
- -e 's|^\(\x1b\[[0-9;]\+m\)\?+\(\x1b\[m\x1b\[[0-9;]\+m\)\?-|\x1b\[1;35m+-|g' \
- -e 's|^\(\x1b\[[0-9;]\+m\)\?-+|\x1b\[36m-+|g' \
- -e 's|^\(\x1b\[[0-9;]\+m\)\?--|\x1b\[35m--|g'
+
+# should also work reasonably well with git diff --word-diff
+
+sed -n \
+ -e ":start" \
+ -e "/^\(\x1b\[[0-9;]\+m\)\?diff .*patch\(\(\x1b\[m\)\?$\| \)/bpatch" \
+ -e "p;n" \
+ -e "#s|.*|NONPATCH|" \
+ -e "bstart" \
+ -e ":patch" \
+ -e "p;n" \
+ -e "/^\(\x1b\[[0-9;]\+m\)\?diff /bstart" \
+ -e "/^\(\x1b\[[0-9;]\+m\)\?\([-+]\)\2\2 /bpatch" \
+ -e "#s|.*|PATCH|" \
+ -e 's|^\(\x1b\[[0-9;]\+m\)\([{]\?[+]\)\(\x1b\[m\1\)\?[+]|\x1b\[1;36m\2+|' \
+ -e 's|^\(\x1b\[[0-9;]\+m\)\([{]\?[+]\)\(\x1b\[m\1\)\?[-]|\x1b\[1;35m\2-|' \
+ -e 's|^\(\x1b\[[0-9;]\+m\)\([[]\?[-]\)\(\x1b\[m\1\)\?[+]|\x1b\[36m\2+|' \
+ -e 's|^\(\x1b\[[0-9;]\+m\)\([[]\?[-]\)\(\x1b\[m\1\)\?[-]|\x1b\[35m\2-|' \
+ -e "bpatch"