mirror of
https://github.com/neovim/neovim.git
synced 2026-07-13 12:50:31 +00:00
vim-patch:9.1.0329: String interpolation fails for Dict type (#28335)
Problem: String interpolation fails for Dict type
Solution: Support Dict data type properly, also support :put =Dict
(without having to convert it to string() first)
(Yegappan Lakshmanan)
fixes: vim/vim#14529
closes: vim/vim#14541
f01493c550
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
@@ -969,7 +969,8 @@ int skip_expr(char **pp, evalarg_T *const evalarg)
|
||||
|
||||
/// Convert "tv" to a string.
|
||||
///
|
||||
/// @param convert when true convert a List into a sequence of lines.
|
||||
/// @param convert when true convert a List into a sequence of lines
|
||||
/// and a Dict into a textual representation of the Dict.
|
||||
///
|
||||
/// @return an allocated string.
|
||||
static char *typval2string(typval_T *tv, bool convert)
|
||||
@@ -985,6 +986,8 @@ static char *typval2string(typval_T *tv, bool convert)
|
||||
}
|
||||
ga_append(&ga, NUL);
|
||||
return (char *)ga.ga_data;
|
||||
} else if (convert && tv->v_type == VAR_DICT) {
|
||||
return encode_tv2string(tv, NULL);
|
||||
}
|
||||
return xstrdup(tv_get_string(tv));
|
||||
}
|
||||
|
||||
@@ -11129,10 +11129,10 @@ M.funcs = {
|
||||
for infinite and NaN floating-point values representations
|
||||
which use |str2float()|. Strings are also dumped literally,
|
||||
only single quote is escaped, which does not allow using YAML
|
||||
for parsing back binary strings. |eval()| should always work for
|
||||
strings and floats though and this is the only official
|
||||
method, use |msgpackdump()| or |json_encode()| if you need to
|
||||
share data with other application.
|
||||
for parsing back binary strings. |eval()| should always work
|
||||
for strings and floats though, and this is the only official
|
||||
method. Use |msgpackdump()| or |json_encode()| if you need to
|
||||
share data with other applications.
|
||||
|
||||
]=],
|
||||
name = 'string',
|
||||
|
||||
Reference in New Issue
Block a user