aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c12
-rw-r--r--src/nvim/eval/decode.c32
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: {