summaryrefslogtreecommitdiffstats
path: root/.local
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2013-08-20 19:29:51 +0200
committerJan Pokorný <jpokorny@redhat.com>2013-08-20 19:29:51 +0200
commit03448087617fcce47570007cdaf7d8ccc5f8e846 (patch)
treec26f65a0a276734a913b204e328555a3c91a5c54 /.local
parent924e217ef7a54ae4eda4b9696d97e9f2846d67cc (diff)
downloaddotfiles-03448087617fcce47570007cdaf7d8ccc5f8e846.tar.gz
dotfiles-03448087617fcce47570007cdaf7d8ccc5f8e846.tar.xz
dotfiles-03448087617fcce47570007cdaf7d8ccc5f8e846.zip
Git config: make subdiff-related commands work well
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to '.local')
-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"