1
0
forked from aniani/vim

patch 8.0.1539: no test for the popup menu positioning

Problem:    No test for the popup menu positioning.
Solution:   Add a screendump test for the popup menu.
This commit is contained in:
Bram Moolenaar
2018-02-24 19:53:53 +01:00
parent bb008dd323
commit 6bb2cdfe60
9 changed files with 121 additions and 33 deletions

View File

@@ -1829,7 +1829,7 @@ color2index(VTermColor *color, int fg, int *boldp)
switch (color->ansi_index)
{
case 0: return 0;
case 1: return lookup_color( 0, fg, boldp) + 1;
case 1: return lookup_color( 0, fg, boldp) + 1; /* black */
case 2: return lookup_color( 4, fg, boldp) + 1; /* dark red */
case 3: return lookup_color( 2, fg, boldp) + 1; /* dark green */
case 4: return lookup_color( 6, fg, boldp) + 1; /* brown */
@@ -2872,7 +2872,7 @@ dump_term_color(FILE *fd, VTermColor *color)
}
/*
* "term_dumpwrite(buf, filename, max-height, max-width)" function
* "term_dumpwrite(buf, filename, options)" function
*
* Each screen cell in full is:
* |{characters}+{attributes}#{fg-color}{color-idx}#{bg-color}{color-idx}
@@ -2899,8 +2899,8 @@ f_term_dumpwrite(typval_T *argvars, typval_T *rettv UNUSED)
buf_T *buf = term_get_buf(argvars);
term_T *term;
char_u *fname;
int max_height = 99999;
int max_width = 99999;
int max_height = 0;
int max_width = 0;
stat_T st;
FILE *fd;
VTermPos pos;
@@ -2913,6 +2913,23 @@ f_term_dumpwrite(typval_T *argvars, typval_T *rettv UNUSED)
return;
term = buf->b_term;
if (argvars[2].v_type != VAR_UNKNOWN)
{
dict_T *d;
if (argvars[2].v_type != VAR_DICT)
{
EMSG(_(e_dictreq));
return;
}
d = argvars[2].vval.v_dict;
if (d != NULL)
{
max_height = get_dict_number(d, (char_u *)"rows");
max_width = get_dict_number(d, (char_u *)"columns");
}
}
fname = get_tv_string_chk(&argvars[1]);
if (fname == NULL)
return;
@@ -2922,13 +2939,6 @@ f_term_dumpwrite(typval_T *argvars, typval_T *rettv UNUSED)
return;
}
if (argvars[2].v_type != VAR_UNKNOWN)
{
max_height = get_tv_number(&argvars[2]);
if (argvars[3].v_type != VAR_UNKNOWN)
max_width = get_tv_number(&argvars[3]);
}
if (*fname == NUL || (fd = mch_fopen((char *)fname, WRITEBIN)) == NULL)
{
EMSG2(_(e_notcreate), *fname == NUL ? (char_u *)_("<empty>") : fname);
@@ -2938,13 +2948,13 @@ f_term_dumpwrite(typval_T *argvars, typval_T *rettv UNUSED)
vim_memset(&prev_cell, 0, sizeof(prev_cell));
screen = vterm_obtain_screen(term->tl_vterm);
for (pos.row = 0; pos.row < max_height && pos.row < term->tl_rows;
++pos.row)
for (pos.row = 0; (max_height == 0 || pos.row < max_height)
&& pos.row < term->tl_rows; ++pos.row)
{
int repeat = 0;
for (pos.col = 0; pos.col < max_width && pos.col < term->tl_cols;
++pos.col)
for (pos.col = 0; (max_width == 0 || pos.col < max_width)
&& pos.col < term->tl_cols; ++pos.col)
{
VTermScreenCell cell;
int same_attr;