diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval.c | 12 | ||||
-rw-r--r-- | src/nvim/eval/decode.c | 32 |
2 files changed, 27 insertions, 17 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 38dc7c1034..dc7737e4ce 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -17060,18 +17060,6 @@ long get_vim_var_nr(int idx) FUNC_ATTR_PURE return vimvars[idx].vv_nr; } -/// Get typval_T representing v: variable -/// -/// @warning if v: variable has reference counter it is not increased. -/// -/// @param[in] idx Variable index, @see VimVarIndex. -typval_T get_vim_var_tv(VimVarIndex idx) FUNC_ATTR_PURE -{ - typval_T ret = vimvars[idx].vv_di.di_tv; - ret.v_lock = VAR_UNLOCKED; - return ret; -} - /* * Get string v: variable value. Uses a static buffer, can only be used once. */ diff --git a/src/nvim/eval/decode.c b/src/nvim/eval/decode.c index 7fffe1c48b..de89f9c132 100644 --- a/src/nvim/eval/decode.c +++ b/src/nvim/eval/decode.c @@ -336,7 +336,11 @@ json_decode_string_cycle_start: goto json_decode_string_fail; } p += 3; - POP(get_vim_var_tv(VV_NULL), false); + POP(((typval_T) { + .v_type = VAR_SPECIAL, + .v_lock = VAR_UNLOCKED, + .vval = { .v_special = kSpecialVarNull }, + }), false); break; } case 't': { @@ -345,7 +349,11 @@ json_decode_string_cycle_start: goto json_decode_string_fail; } p += 3; - POP(get_vim_var_tv(VV_TRUE), false); + POP(((typval_T) { + .v_type = VAR_SPECIAL, + .v_lock = VAR_UNLOCKED, + .vval = { .v_special = kSpecialVarTrue }, + }), false); break; } case 'f': { @@ -354,7 +362,11 @@ json_decode_string_cycle_start: goto json_decode_string_fail; } p += 4; - POP(get_vim_var_tv(VV_FALSE), false); + POP(((typval_T) { + .v_type = VAR_SPECIAL, + .v_lock = VAR_UNLOCKED, + .vval = { .v_special = kSpecialVarFalse }, + }), false); break; } case '"': { @@ -716,11 +728,21 @@ int msgpack_to_vim(const msgpack_object mobj, typval_T *const rettv) { switch (mobj.type) { case MSGPACK_OBJECT_NIL: { - *rettv = get_vim_var_tv(VV_NULL); + *rettv = (typval_T) { + .v_type = VAR_SPECIAL, + .v_lock = VAR_UNLOCKED, + .vval = { .v_special = kSpecialVarNull }, + }; break; } case MSGPACK_OBJECT_BOOLEAN: { - *rettv = get_vim_var_tv(mobj.via.boolean ? VV_TRUE : VV_FALSE); + *rettv = (typval_T) { + .v_type = VAR_SPECIAL, + .v_lock = VAR_UNLOCKED, + .vval = { + .v_special = mobj.via.boolean ? kSpecialVarTrue : kSpecialVarFalse + }, + }; break; } case MSGPACK_OBJECT_POSITIVE_INTEGER: { |