From: Junio C Hamano <gitster@pobox.com>
To: Thomas Rast <trast@student.ethz.ch>
Cc: git@vger.kernel.org,
Johannes Schindelin <johannes.schindelin@gmx.de>,
Teemu Likonen <tlikonen@iki.fi>
Subject: Re: [PATCH v3 1/4] word diff: comments, preparations for regex customization
Date: Sun, 11 Jan 2009 14:19:57 -0800 [thread overview]
Message-ID: <7vljthpjsi.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: 4aea85caafd38a058145c5769fe8a30ffdbd4d13.1231669012.git.trast@student.ethz.ch
Thomas Rast <trast@student.ethz.ch> writes:
> +/* unused right now */
> +enum diff_word_boundaries {
> + DIFF_WORD_UNDEF,
> + DIFF_WORD_BODY,
> + DIFF_WORD_END,
> + DIFF_WORD_SPACE,
> + DIFF_WORD_SKIP
> +};
Don't do this. Please introduce them when you start using them.
> struct diff_words_buffer {
> mmfile_t text;
> long alloc;
> long current; /* output pointer */
> int suppressed_newline;
> + enum diff_word_boundaries *boundaries;
> };
Likewise. Especially because this raises eyebrows "Huh, a pointer to an
enum, or perhaps he allocates an array of enums?" without allowing the
reader to figure it out much later when the field is actually used.
> static void diff_words_append(char *line, unsigned long len,
> @@ -339,16 +349,23 @@ static void diff_words_append(char *line, unsigned long len,
> struct diff_words_data {
> struct diff_words_buffer minus, plus;
> FILE *file;
> + regex_t *word_regex; /* currently unused */
> };
I see having this here and keeping it NULL in this patch makes the later
patch to diff_words_show() more readable, so this probably should stay
here.
> -static void print_word(FILE *file, struct diff_words_buffer *buffer, int len, int color,
> +/*
> + * Print 'len' characters from the "real" diff data in 'buffer'. Also
> + * returns how many characters were printed (currently always 'len').
> + * With 'suppress_newline', we remember a final newline instead of
> + * printing it.
> + */
"... Even in such a case, 'len' that is returned counts the suppressed
newline", or something like that? If you can concisely describe why the
caller wants the returned count not match the number of actually printed
chars (i.e. it includes the suppressed newline), it would help the reader
understand the logic. I am _guessing_ it is because this is called to
print matching words from the preimage buffer, and the return value is
used to skip over the same part in the postimage buffer, and by definition
they have to be of the same length (otherwise they won't be matching).
> +static int print_word(FILE *file, struct diff_words_buffer *buffer, int len, int color,
> int suppress_newline)
> {
> const char *ptr;
> int eol = 0;
>
> if (len == 0)
> - return;
> + return len;
>
> ptr = buffer->text.ptr + buffer->current;
> buffer->current += len;
> @@ -368,18 +385,30 @@ static void print_word(FILE *file, struct diff_words_buffer *buffer, int len, in
> else
> putc('\n', file);
> }
> +
> + /* we need to return how many chars to skip on the other side,
> + * so account for the (held off) \n */
Multi-line comment style? I won't repeat this but you have many...
> + return len+eol;
> }
>
> +/*
> + * Callback for word diff output
> + */
Without saying "to do what", the comment adds more noise than signal.
"Called to parse diff between pre- and post- image files converted into
one-word-per-line format and concatenate them to into lines by dropping
some of the end-of-lines but keeping some others", or something like that?
Thanks.
next prev parent reply other threads:[~2009-01-11 22:21 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-09 0:05 [RFC PATCH] make diff --color-words customizable Thomas Rast
2009-01-09 0:25 ` Johannes Schindelin
2009-01-09 0:50 ` Thomas Rast
2009-01-09 11:15 ` Johannes Schindelin
2009-01-09 11:59 ` [ILLUSTRATION PATCH] color-words: take an optional regular expression describing words Johannes Schindelin
2009-01-09 12:24 ` Thomas Rast
2009-01-09 13:05 ` Teemu Likonen
2009-01-10 0:57 ` [PATCH v2] make diff --color-words customizable Thomas Rast
2009-01-10 1:50 ` Jakub Narebski
2009-01-10 11:37 ` Johannes Schindelin
2009-01-10 13:36 ` Jakub Narebski
2009-01-10 14:08 ` Johannes Schindelin
2009-01-12 23:59 ` Jakub Narebski
2009-01-13 0:40 ` Johannes Schindelin
2009-01-10 17:53 ` Davide Libenzi
2009-01-13 0:52 ` Jakub Narebski
2009-01-13 18:50 ` Davide Libenzi
2009-01-10 10:49 ` Johannes Schindelin
2009-01-10 11:25 ` Thomas Rast
2009-01-10 11:45 ` Johannes Schindelin
2009-01-11 1:34 ` Junio C Hamano
2009-01-11 10:27 ` [PATCH v3 0/4] customizable --color-words Thomas Rast
2009-01-11 10:27 ` [PATCH v3 1/4] word diff: comments, preparations for regex customization Thomas Rast
2009-01-11 13:41 ` Johannes Schindelin
2009-01-11 19:49 ` Johannes Schindelin
2009-01-11 22:19 ` Junio C Hamano [this message]
2009-01-11 10:27 ` [PATCH v3 2/4] word diff: customizable word splits Thomas Rast
2009-01-11 22:20 ` Junio C Hamano
2009-01-11 10:27 ` [PATCH v3 3/4] word diff: make regex configurable via attributes Thomas Rast
2009-01-11 23:20 ` Junio C Hamano
2009-01-11 10:27 ` [PATCH v3 4/4] word diff: test customizable word splits Thomas Rast
2009-01-09 9:53 ` [RFC PATCH] make diff --color-words customizable Jeff King
2009-01-09 11:18 ` Johannes Schindelin
2009-01-09 11:22 ` Jeff King
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=7vljthpjsi.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=johannes.schindelin@gmx.de \
--cc=tlikonen@iki.fi \
--cc=trast@student.ethz.ch \
/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).