aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-05-31 23:43:40 +0200
committerGitHub <noreply@github.com>2017-05-31 23:43:40 +0200
commit133f8bc628c20510571a9f6c93b61a14521327d1 (patch)
treea0d8fdef972c4d203e76b914720f78b404beeffe /src/nvim/eval.c
parentc1026ff4b3b6500c06d5a2233214addbb41936cb (diff)
parent2f2eeb19ba7ba6f8b7789d7d10c9e821d4ea3351 (diff)
downloadrneovim-133f8bc628c20510571a9f6c93b61a14521327d1.tar.gz
rneovim-133f8bc628c20510571a9f6c93b61a14521327d1.tar.bz2
rneovim-133f8bc628c20510571a9f6c93b61a14521327d1.zip
Merge #4700 from AdnoC/keep-default-register
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 4e303414a3..7187386ec7 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -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);
}
@@ -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)) { }
+ }
}
/*