From 9a91ce4fa6a7504644e10a6761eae5cc5699159a Mon Sep 17 00:00:00 2001 From: AdnoC Date: Wed, 4 May 2016 14:16:19 -0400 Subject: eval: Add ability to set the unnamed register with setreg --- src/nvim/eval.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/nvim/eval.c') diff --git a/src/nvim/eval.c b/src/nvim/eval.c index e4b3128930..473de02ab6 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); } @@ -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); + } } /* -- cgit From 0c3dea5c4d86a8ef61363034877bde04a0e99463 Mon Sep 17 00:00:00 2001 From: AdnoC Date: Mon, 29 May 2017 11:31:06 -0400 Subject: style/lint --- src/nvim/eval.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/nvim/eval.c') diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 473de02ab6..398d8bb699 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -14822,7 +14822,7 @@ static void f_setreg(typval_T *argvars, typval_T *rettv, FunPtr fptr) } break; } - case 'u': case '"': { // unnamed register + case 'u': case '"': { // unnamed register set_unnamed = true; break; } -- cgit From 745bac562d84cda1e3e150e482f673fa5bd23638 Mon Sep 17 00:00:00 2001 From: AdnoC Date: Mon, 29 May 2017 12:04:19 -0400 Subject: eval.c: Ignore unnamed register error in f_setreg The error case is already handled and an appropriate error message is already printed. --- src/nvim/eval.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/nvim/eval.c') diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 398d8bb699..35ca236831 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -14880,7 +14880,8 @@ free_lstval: rettv->vval.v_number = 0; if (set_unnamed) { - op_register_set_previous(regname); + // Discard the result. We already handle the error case. + if (op_register_set_previous(regname)) { } } } -- cgit