Hi Christian,
On Tue, May 2, 2023 at 9:43 AM Christian Brabandt <[email protected]>
wrote:
> I am still confused by the output, even after reading the help section
> several times. So index is the index into the list input and byte is the
> start byte from that list[index]?
>
Yes.
> And count is the number of changes performed?
>
Yes. "count" is the number of items in the list added or removed or
modified in the diff hunk.
> That is a bit confusing, because if an item was added to the list, like
> here:
>
> " few lines added at the end
> :echo diff(['abc'], ['abc', 'def', 'ghi'])
> [{'from': {'start': {'idx': 1, 'byte': -1}, 'end': {'idx': -1, 'byte': -1},
> 'count': 0},
> 'to': {'start': {'idx': 1, 'byte': 0}, 'end': {'idx': 2, 'byte': 2},
> 'count': 2}}]
>
> the count in the to dict means two additional items have been added
> (appended) to the list. But then if you take this example:
>
> " word is removed in the middle of a string
> :echo diff(['abc def ghi'], ['abc ghi'])
> [{'from': {'start': {'idx': 0, 'byte': 4}, 'end': {'idx': 0, 'byte': 7},
> 'count': 1},
> 'to': {'start': {'idx': 0, 'byte': 4}, 'end': {'idx': 0, 'byte': -1},
> 'count': 1}}]
>
> Then count does not mean to add or remove a single item to the list, but
> apparently that only one single change has been done, e.g. removing from
> byte 4 to byte 7.
>
In this example, there is only one item in the "from" and "to" lists. As
this item is modified, the "count"
is 1 in both the "from" and "to" dicts.
> Also, I guess the help could be a bit more precise, I suppose the -1
> applies only for added items in the from Dict and removed items in the to
> Dict
>
I will update the help text to clarify this.
> Each item in the returned List is a Dict containing
> information about a diff hunk. Each Dict contains the
> following items:
> from Dict with {list1} diff hunk information
> to Dict with {list2} diff hunk information
> The "from" and "to" Dicts contain the following items:
> start Dict containing the starting index and byte of the
> diff hunk. The "byte" is -1 if text is added
> (in the "from" Dict) or removed (in the "to" Dict).
> end Dict containing the ending index and byte of the
> diff hunk. The "idx" and "byte" are -1 if text is
> added (in the "from" Dict) or removed (in the "to" Dict).
> count number of items added/removed/modified in this diff
> hunk.
>
> And how would this look like if we have several hunks? Can we have this as
> example as well?
>
Yes. I will add additional examples for multiple diff hunks.
> Also I would have thought you would need something like oldstart,oldcount
> newstart,newcount which basically is the hunk header from a unified diff.
> So perhaps we can just also add the raw diff output per hunk as well?
>
>
>
The raw diff output from xdiff contains the line number and count for both
the original
and new lines. Are you referring to including these in the output?
Regards,
Yegappan
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/CAAW7x7%3Dgm3SdXRi1oGVVZHKND%2B45SreHEF_q34tTZrkpupxEbw%40mail.gmail.com.