mirror of
https://github.com/neovim/neovim.git
synced 2025-09-14 23:38:17 +00:00
Merge #4700 from AdnoC/keep-default-register
This commit is contained in:
@@ -5100,7 +5100,8 @@ bool garbage_collect(bool testing)
|
||||
do {
|
||||
yankreg_T reg;
|
||||
char name = NUL;
|
||||
reg_iter = op_register_iter(reg_iter, &name, ®);
|
||||
bool is_unnamed = false;
|
||||
reg_iter = op_register_iter(reg_iter, &name, ®, &is_unnamed);
|
||||
if (name != NUL) {
|
||||
ABORTING(set_ref_dict)(reg.additional_data, copyID);
|
||||
}
|
||||
@@ -14834,6 +14835,7 @@ static void f_setreg(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
||||
regname = '"';
|
||||
}
|
||||
|
||||
bool set_unnamed = false;
|
||||
if (argvars[2].v_type != VAR_UNKNOWN) {
|
||||
const char *stropt = tv_get_string_chk(&argvars[2]);
|
||||
if (stropt == NULL) {
|
||||
@@ -14862,6 +14864,10 @@ static void f_setreg(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'u': case '"': { // unnamed register
|
||||
set_unnamed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14914,6 +14920,11 @@ free_lstval:
|
||||
append, yank_type, block_len);
|
||||
}
|
||||
rettv->vval.v_number = 0;
|
||||
|
||||
if (set_unnamed) {
|
||||
// Discard the result. We already handle the error case.
|
||||
if (op_register_set_previous(regname)) { }
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user