Is there a way to use --word-diff
for LaTeX files (*.tex) and keep the standard line difference for other file types?
What I want to achieve is to use git diff
command and let git show the word difference on *.tex files automatically without a need to write git diff --word-diff
each time. At the same time I want git to show the standard line difference for other file types. Is that possible?
See the Generating diff text section of the gitattributes
documentation. However, to automatically get word diffs just for *.tex
files, you must put this together with additional information there and in some other documents.
Also, at least in my current git version (2.7.4), the built-in regex for tex files is broken:
fatal: Invalid regular expression: \\[a-zA-Z@]+|\\.|[a-zA-Z0-9<80>-<FF>]+|[^[:sp
so I have to work around that even harder.
Putting these all together:
$ cat .gitattributes
*.tex diff=tex
$ git config --get diff.tex.wordregex
\\[a-zA-Z]+|[{}]|\\.|[^\{}[:space:]]+
(this regex is straight from the gitattributes documentation), plus one more configuration item and one driver:
$ git config --get diff.tex.command
git-word-diff-driver
$ cat ~/scripts/git-word-diff-driver
#! /bin/sh
#
# args are:
# path old-file old-hex old-mode new-file new-hex new-mode
git diff --word-diff $2 $5
exit 0
(This script might be improved, but it shows the general idea. The exit 0
is required since git diff
has a nonzero exit if the files differ, as they tend to. Fortunately there is no need to protect against endless recursion since git diff --word-diff path1 path2
does not re-invoke the gitattributes driver.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With