summaryrefslogtreecommitdiffstats
path: root/.local/bin/subdiff
blob: 48b434334970181581b4f7b1c5c015e1cb7cfb3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

# 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 '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"