eval: Add ability to set the unnamed register with setreg

This commit is contained in:
AdnoC
2016-05-04 14:16:19 -04:00
parent a00b03d03f
commit 9a91ce4fa6
3 changed files with 29 additions and 1 deletions

View File

@@ -5100,7 +5100,8 @@ bool garbage_collect(bool testing)
do {
yankreg_T reg;
char name = NUL;
reg_iter = op_register_iter(reg_iter, &name, &reg);
bool is_unnamed = false;
reg_iter = op_register_iter(reg_iter, &name, &reg, &is_unnamed);
if (name != NUL) {
ABORTING(set_ref_dict)(reg.additional_data, copyID);
}
@@ -14792,6 +14793,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) {
@@ -14820,6 +14822,10 @@ static void f_setreg(typval_T *argvars, typval_T *rettv, FunPtr fptr)
}
break;
}
case 'u': case '"': { // unnamed register
set_unnamed = true;
break;
}
}
}
}
@@ -14872,6 +14878,10 @@ free_lstval:
append, yank_type, block_len);
}
rettv->vval.v_number = 0;
if (set_unnamed) {
op_register_set_previous(regname);
}
}
/*