diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2017-05-31 23:43:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-31 23:43:40 +0200 |
commit | 133f8bc628c20510571a9f6c93b61a14521327d1 (patch) | |
tree | a0d8fdef972c4d203e76b914720f78b404beeffe /src/nvim/eval.c | |
parent | c1026ff4b3b6500c06d5a2233214addbb41936cb (diff) | |
parent | 2f2eeb19ba7ba6f8b7789d7d10c9e821d4ea3351 (diff) | |
download | rneovim-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.c | 13 |
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, ®); + 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)) { } + } } /* |