[PATCH 00/26] reroll of sb/diff-color-moved
- From
Stefan Beller <sbeller@google.com>
- Date
- Jun 20, 2017, 02:47 UTC
- Message-ID
- <20170620024816.20021-1-sbeller@google.com>
- In-Reply-To
- <CAGZ79kaqjQYmkt77kk5m=fdBfbZAvwd0YhhT7=O5b-FkQmDfHg@mail.gmail.com>
This is a complete rewrite of the series. Highlights:
* instead of buffering partial lines, we'll pretend all diff output
follows a well defined grammar, and we emit symbols thereof.
(The difference is mostly mental, though by this trick we reduce
the memory footprint for storing one of these symbols from 7 variables
(3 pointers, 3 ints, one state (also int) down to 4 variables
(one pointer, 2 ints, one state).
* The algorithm for color painting was detangled:
-> different functions for block detection and dimming
-> The last patch (not to be applied) is an RFC that shows
how we would approach non-colored, but machine parseable highlighting
of moved lines.Thanks, Stefan
Stefan Beller (26):
diff.c: readability fix
diff.c: move line ending check into emit_hunk_header
diff.c: factor out diff_flush_patch_all_file_pairs
diff.c: introduce emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
diff.c: migrate emit_line_checked to use emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS{_PORCELAIN}
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR
diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
submodule.c: migrate diff output to use emit_diff_symbol
diff.c: convert emit_binary_diff_body to use emit_diff_symbol
diff.c: convert show_stats to use emit_diff_symbol
diff.c: convert word diffing to use emit_diff_symbol
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
diff.c: buffer all output if asked to
diff.c: color moved lines differently
diff.c: color moved lines differently, plain mode
diff.c: add dimming to moved line detection
diff: document the new --color-moved setting
WIP/RFC: diff.c: have a "machine parseable" move coloringDocumentation/config.txt | 12 +- Documentation/diff-options.txt | 27 + cache.h | 1 + color.h | 2 + diff.c | 1283 ++++++++++++++++++++++++++++++++-------- diff.h | 39 +- submodule.c | 85 ++- submodule.h | 13 +- t/t4015-diff-whitespace.sh | 369 ++++++++++++ 9 files changed, 1515 insertions(+), 316 deletions(-)
-- 2.12.2.575.gb14f27f917