mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
patch 9.1.1473: inconsistent range arg for :diffget/diffput
Problem: inconsistent range arg for :diffget/diffput Solution: fix the range specification, place the cursor for :diffput and :diffget consistently on the last line (Yee Cheng Chin) Previously, `:<range>diffget` only allowed using 1 or above in the range value, making it impossible to use the command for a diff block at the beginning of the file. Fix the range specification so the user can now use 0 to specify the space before the first line. This allows `:0,$+1diffget` to work to retrieve all the changes from the other file instead of missing the first diff block. Also do this for `:diffput`. Also, make `:diffput` work more similar to `:diffget`. Make it so that if the cursor is on the last line and a new line is inserted in the other file, doing `:diffput` will select that diff block below the line, just like `:diffget` would. Also clean up the logic a little bit for edge cases and for handling line matched diff blocks better. closes: #17579 Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
476b65ebac
commit
d75ab0cbf5
@ -4850,7 +4850,8 @@ invalid_range(exarg_T *eap)
|
||||
case ADDR_LINES:
|
||||
if (eap->line2 > curbuf->b_ml.ml_line_count
|
||||
#ifdef FEAT_DIFF
|
||||
+ (eap->cmdidx == CMD_diffget)
|
||||
+ (eap->cmdidx == CMD_diffget ||
|
||||
eap->cmdidx == CMD_diffput)
|
||||
#endif
|
||||
)
|
||||
return _(e_invalid_range);
|
||||
|
Reference in New Issue
Block a user