StringIgnoringNewline caused crashes in code that assumed that two
equal values would hav the same string length.
This reverts 86612798ad. A better
approach would be to normalise line endings before diffing, but
additionally print whether files have/lack trailing newlines.
Fixes#755
`git-difftool` has strictly less information than `git-diff`.
`git-difftool` therefore produces worse results, and we shouldn't
recommend it.
`git-difftool` does not have file rename information, and sometimes
makes difftastic claim that file permissions have changed (depending
on the permissions of the temporary directory used).
Instead, recommend `git-diff` with an external diff configured, and
update `git-mergetool` instructions to emulate `git-diff` as much as
possible (respecting $MERGED).
Also link to the upstream git bug on segfaults with external diff
tools.
Thanks to @poliorcetics and @gthb for researching this bug and
discussing possible solutions.
Closes#734Fixes#620
Input cleaning should happen before we diff the content, not during
display. Previously display would crash due to line numbers
referencing the line that had been stripped.
Fixes#713Fixes#739Fixes#742
We rely on being able to split lines and rejoin them to obtain the
original string. `str::lines()` in the Rust stdlib does not have this
property.
This was causing crashes in word-diffing on textual diffing, where
code paths differed on the number of lines they thought a string had.
This was broken in 8b842387a1.
Fixes#688.
This is a very minor performance win, a few percent in my
benchmarking.
typing_1.ml went from 3.013M to 2.996M instructions (0.6% reduction).
slow_1.rs went from 2.153M to 2.046M instructions (5% reduction).
Fixes#728
**Problem**
We currently use scala/scala and scala/scala3 to run the smoke test,
but the versions are slightly older.
**Solution**
1. This bumps the versions to latest. Thankfully not much regression on the percentage.
2. This also adds lila for testing.