git/list[1] front-page[2] threads[3] people[4] search[5] about
 

A failed attempt to integrate diff-highlight to the core

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Dec 31, 2015, 12:37 UTC
Message-ID
<1451565457-18756-1-git-send-email-pclouds@gmail.com>

This is mostly for the record. The patches are not as important as the result in this mail. But if you want to try out, you can.

If you don't know, the script diff-highlight in contrib can highlight changes between two nearly identical lines, pointing out what characters are different. It can improve readability a lot in certain cases (e.g. when you wrap _() around strings).

I approached it differently. I took --color-words and reformatted its output in unified diff format. So you'll see +/- lines like a normal diff, but deleted and added words are also highlighted.

The idea seems to fit well into diff-words machinery. But the output does not, especially in cases where there are many deleted/added words in a chunk. It could look.. patchy, like somebody throwing colors on a wall (especially when you do --highlight-words=.). You can try out and see. git-log works so you can see lots of diff.

I don't know, maybe the idea can be improved to have something closer to diff-highlight. I suppose we can select similar lines and diff them, instead of diff the entire chunk in one go. I might revisit it at some point in future, but for now, it's a failure.

Nguyễn Thái Ngọc Duy (7):
  diff.c: keep all word diff structs together
  diff.c: refactor diff_words_append()
  diff --color-words: another special diff case
  diff.c: refactor fn_out_diff_words_write_helper()
  diff: unified diff with colored words, step 1, unified diff only
  diff.c: add new arguments to emit_line_0()
  diff --highlight-words: actually highlight words
 diff.c | 400 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 diff.h |   3 +-
 2 files changed, 363 insertions(+), 40 deletions(-)
-- 
2.3.0.rc1.137.g477eb31
Next: Nguyễn Thái Ngọc Duy
Message 1 of 8 in “A failed attempt to integrate diff-highlight to the core”
  1. Nguyễn Thái Ngọc DuyDec 31, 2015
  2. 1/7 diff.c: keep all word diff structs togetherNguyễn Thái Ngọc Duy, Dec 31, 2015
  3. 2/7 diff.c: refactor diff_words_append()Nguyễn Thái Ngọc Duy, Dec 31, 2015
  4. 3/7 diff --color-words: another special diff caseNguyễn Thái Ngọc Duy, Dec 31, 2015
  5. 4/7 diff.c: refactor fn_out_diff_words_write_helper()Nguyễn Thái Ngọc Duy, Dec 31, 2015
  6. 5/7 diff: unified diff with colored words, step 1, unified diff onlyNguyễn Thái Ngọc Duy, Dec 31, 2015
  7. 6/7 diff.c: add new arguments to emit_line_0()Nguyễn Thái Ngọc Duy, Dec 31, 2015
  8. 7/7 diff --highlight-words: actually highlight wordsNguyễn Thái Ngọc Duy, Dec 31, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.