forked from aniani/vim
patch 8.0.0867: job and channel in a dict value not quoted
Problem: When using a job or channel value as a dict value, when turning it into a string the quotes are missing. Solution: Add quotes to the job and channel values. (Yasuhiro Matsumoto, closes #1930)
This commit is contained in:
parent
d53109886b
commit
35422f45ba
23
src/eval.c
23
src/eval.c
@ -5683,9 +5683,9 @@ get_var_special_name(int nr)
|
|||||||
* If the memory is allocated "tofree" is set to it, otherwise NULL.
|
* If the memory is allocated "tofree" is set to it, otherwise NULL.
|
||||||
* "numbuf" is used for a number.
|
* "numbuf" is used for a number.
|
||||||
* When "copyID" is not NULL replace recursive lists and dicts with "...".
|
* When "copyID" is not NULL replace recursive lists and dicts with "...".
|
||||||
* When both "echo_style" and "dict_val" are FALSE, put quotes around stings as
|
* When both "echo_style" and "composite_val" are FALSE, put quotes around
|
||||||
* "string()", otherwise does not put quotes around strings, as ":echo"
|
* stings as "string()", otherwise does not put quotes around strings, as
|
||||||
* displays values.
|
* ":echo" displays values.
|
||||||
* When "restore_copyID" is FALSE, repeated items in dictionaries and lists
|
* When "restore_copyID" is FALSE, repeated items in dictionaries and lists
|
||||||
* are replaced with "...".
|
* are replaced with "...".
|
||||||
* May return NULL.
|
* May return NULL.
|
||||||
@ -5698,7 +5698,7 @@ echo_string_core(
|
|||||||
int copyID,
|
int copyID,
|
||||||
int echo_style,
|
int echo_style,
|
||||||
int restore_copyID,
|
int restore_copyID,
|
||||||
int dict_val)
|
int composite_val)
|
||||||
{
|
{
|
||||||
static int recurse = 0;
|
static int recurse = 0;
|
||||||
char_u *r = NULL;
|
char_u *r = NULL;
|
||||||
@ -5721,10 +5721,12 @@ echo_string_core(
|
|||||||
switch (tv->v_type)
|
switch (tv->v_type)
|
||||||
{
|
{
|
||||||
case VAR_STRING:
|
case VAR_STRING:
|
||||||
if (echo_style && !dict_val)
|
if (echo_style && !composite_val)
|
||||||
{
|
{
|
||||||
*tofree = NULL;
|
*tofree = NULL;
|
||||||
r = get_tv_string_buf(tv, numbuf);
|
r = tv->vval.v_string;
|
||||||
|
if (r == NULL)
|
||||||
|
r = (char_u *)"";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -5841,10 +5843,19 @@ echo_string_core(
|
|||||||
|
|
||||||
case VAR_NUMBER:
|
case VAR_NUMBER:
|
||||||
case VAR_UNKNOWN:
|
case VAR_UNKNOWN:
|
||||||
|
*tofree = NULL;
|
||||||
|
r = get_tv_string_buf(tv, numbuf);
|
||||||
|
break;
|
||||||
|
|
||||||
case VAR_JOB:
|
case VAR_JOB:
|
||||||
case VAR_CHANNEL:
|
case VAR_CHANNEL:
|
||||||
*tofree = NULL;
|
*tofree = NULL;
|
||||||
r = get_tv_string_buf(tv, numbuf);
|
r = get_tv_string_buf(tv, numbuf);
|
||||||
|
if (composite_val)
|
||||||
|
{
|
||||||
|
*tofree = string_quote(r, FALSE);
|
||||||
|
r = *tofree;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VAR_FLOAT:
|
case VAR_FLOAT:
|
||||||
|
@ -740,7 +740,7 @@ list_join_inner(
|
|||||||
for (item = l->lv_first; item != NULL && !got_int; item = item->li_next)
|
for (item = l->lv_first; item != NULL && !got_int; item = item->li_next)
|
||||||
{
|
{
|
||||||
s = echo_string_core(&item->li_tv, &tofree, numbuf, copyID,
|
s = echo_string_core(&item->li_tv, &tofree, numbuf, copyID,
|
||||||
echo_style, restore_copyID, FALSE);
|
echo_style, restore_copyID, !echo_style);
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@ func Run_shell_in_terminal()
|
|||||||
let g:job = term_getjob(buf)
|
let g:job = term_getjob(buf)
|
||||||
call assert_equal(v:t_job, type(g:job))
|
call assert_equal(v:t_job, type(g:job))
|
||||||
|
|
||||||
|
let string = string({'job': term_getjob(buf)})
|
||||||
|
call assert_match("{'job': 'process \\d\\+ run'}", string)
|
||||||
|
|
||||||
return buf
|
return buf
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
@ -769,6 +769,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
867,
|
||||||
/**/
|
/**/
|
||||||
866,
|
866,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user