git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: A failed attempt to integrate diff-highlight to the core
Date: Thu, 31 Dec 2015 19:37:30 +0700	[thread overview]
Message-ID: <1451565457-18756-1-git-send-email-pclouds@gmail.com> (raw)

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

             reply	other threads:[~2015-12-31 12:37 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-31 12:37 Nguyễn Thái Ngọc Duy [this message]
2015-12-31 12:37 ` [PATCH 1/7] diff.c: keep all word diff structs together Nguyễn Thái Ngọc Duy
2015-12-31 12:37 ` [PATCH 2/7] diff.c: refactor diff_words_append() Nguyễn Thái Ngọc Duy
2015-12-31 12:37 ` [PATCH 3/7] diff --color-words: another special diff case Nguyễn Thái Ngọc Duy
2015-12-31 12:37 ` [PATCH 4/7] diff.c: refactor fn_out_diff_words_write_helper() Nguyễn Thái Ngọc Duy
2015-12-31 12:37 ` [PATCH 5/7] diff: unified diff with colored words, step 1, unified diff only Nguyễn Thái Ngọc Duy
2015-12-31 12:37 ` [PATCH 6/7] diff.c: add new arguments to emit_line_0() Nguyễn Thái Ngọc Duy
2015-12-31 12:37 ` [PATCH 7/7] diff --highlight-words: actually highlight words Nguyễn Thái Ngọc Duy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1451565457-18756-1-git-send-email-pclouds@gmail.com \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).