1
0
forked from aniani/vim

patch 8.2.0816: terminal test fails when compiled with Athena

Problem:    Terminal test fails when compiled with Athena.
Solution:   Do give an error when the GUI is not running. (hint by Dominique
            Pelle, closes #5928, closes #6132)
This commit is contained in:
Bram Moolenaar
2020-05-24 17:23:45 +02:00
parent 9c65253fe7
commit 87202264f8
6 changed files with 27 additions and 10 deletions

View File

@@ -5308,6 +5308,7 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2)
{ {
char_u *color_name; char_u *color_name;
guicolor_T guicolor; guicolor_T guicolor;
int called_emsg_before = called_emsg;
color_name = tv_get_string_chk(&li->li_tv); color_name = tv_get_string_chk(&li->li_tv);
if (color_name == NULL) if (color_name == NULL)
@@ -5315,7 +5316,12 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2)
guicolor = GUI_GET_COLOR(color_name); guicolor = GUI_GET_COLOR(color_name);
if (guicolor == INVALCOLOR) if (guicolor == INVALCOLOR)
{
if (called_emsg_before == called_emsg)
// may not get the error if the GUI didn't start
semsg(_(e_alloc_color), color_name);
return FAIL; return FAIL;
}
rgb[n] = GUI_MCH_GET_RGB(guicolor); rgb[n] = GUI_MCH_GET_RGB(guicolor);
} }

View File

@@ -1767,6 +1767,9 @@ EXTERN char e_no_white_before[] INIT(= N_("E1068: No white space allowed before
EXTERN char e_lock_unlock[] INIT(= N_("E940: Cannot lock or unlock variable %s")); EXTERN char e_lock_unlock[] INIT(= N_("E940: Cannot lock or unlock variable %s"));
#endif #endif
#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
EXTERN char e_alloc_color[] INIT(= N_("E254: Cannot allocate color %s"));
#endif
#ifdef FEAT_GUI_MAC #ifdef FEAT_GUI_MAC
EXTERN short disallow_gui INIT(= FALSE); EXTERN short disallow_gui INIT(= FALSE);

View File

@@ -4741,7 +4741,7 @@ gui_get_color(char_u *name)
&& gui.in_use && gui.in_use
#endif #endif
) )
semsg(_("E254: Cannot allocate color %s"), name); semsg(_(e_alloc_color), name);
return t; return t;
} }

View File

@@ -1381,7 +1381,7 @@ termgui_get_color(char_u *name)
t = termgui_mch_get_color(name); t = termgui_mch_get_color(name);
if (t == INVALCOLOR) if (t == INVALCOLOR)
semsg(_("E254: Cannot allocate color %s"), name); semsg(_(e_alloc_color), name);
return t; return t;
} }
@@ -1587,9 +1587,9 @@ may_adjust_color_count(int val)
log_tr("Received t_Co, redraw_asap(): %d", r); log_tr("Received t_Co, redraw_asap(): %d", r);
} }
#else # else
redraw_asap(CLEAR); redraw_asap(CLEAR);
#endif # endif
} }
} }
#endif #endif
@@ -1597,10 +1597,10 @@ may_adjust_color_count(int val)
#ifdef HAVE_TGETENT #ifdef HAVE_TGETENT
static char *(key_names[]) = static char *(key_names[]) =
{ {
#ifdef FEAT_TERMRESPONSE # ifdef FEAT_TERMRESPONSE
// Do this one first, it may cause a screen redraw. // Do this one first, it may cause a screen redraw.
"Co", "Co",
#endif # endif
"ku", "kd", "kr", "kl", "ku", "kd", "kr", "kl",
"#2", "#4", "%i", "*7", "#2", "#4", "%i", "*7",
"k1", "k2", "k3", "k4", "k5", "k6", "k1", "k2", "k3", "k4", "k5", "k6",

View File

@@ -1009,13 +1009,17 @@ func Test_terminal_term_start_empty_command()
call assert_fails(cmd, 'E475:') call assert_fails(cmd, 'E475:')
let cmd = "call term_start('', {'term_highlight' : []})" let cmd = "call term_start('', {'term_highlight' : []})"
call assert_fails(cmd, 'E475:') call assert_fails(cmd, 'E475:')
if has('gui') if has('gui') || has('termguicolors')
let cmd = "call term_start('', {'ansi_colors' : 'abc'})" let cmd = "call term_start('', {'ansi_colors' : 'abc'})"
call assert_fails(cmd, 'E475:') call assert_fails(cmd, 'E475:')
let cmd = "call term_start('', {'ansi_colors' : [[]]})" let cmd = "call term_start('', {'ansi_colors' : [[]]})"
call assert_fails(cmd, 'E730:') call assert_fails(cmd, 'E730:')
let cmd = "call term_start('', {'ansi_colors' : repeat(['blue'], 18)})" let cmd = "call term_start('', {'ansi_colors' : repeat(['blue'], 18)})"
call assert_fails(cmd, 'E475:') if has('gui_running') || has('termguicolors')
call assert_fails(cmd, 'E475:')
else
call assert_fails(cmd, 'E254:')
endif
endif endif
endfunc endfunc
@@ -2668,7 +2672,6 @@ endfunc
" Test for passing invalid arguments to terminal functions " Test for passing invalid arguments to terminal functions
func Test_term_func_invalid_arg() func Test_term_func_invalid_arg()
call assert_fails('let b = term_getaltscreen([])', 'E745:') call assert_fails('let b = term_getaltscreen([])', 'E745:')
call assert_fails('let p = term_getansicolors([])', 'E745:')
call assert_fails('let a = term_getattr(1, [])', 'E730:') call assert_fails('let a = term_getattr(1, [])', 'E730:')
call assert_fails('let c = term_getcursor([])', 'E745:') call assert_fails('let c = term_getcursor([])', 'E745:')
call assert_fails('let l = term_getline([], 1)', 'E745:') call assert_fails('let l = term_getline([], 1)', 'E745:')
@@ -2677,10 +2680,13 @@ func Test_term_func_invalid_arg()
call assert_fails('let s = term_getstatus([])', 'E745:') call assert_fails('let s = term_getstatus([])', 'E745:')
call assert_fails('let s = term_scrape([], 1)', 'E745:') call assert_fails('let s = term_scrape([], 1)', 'E745:')
call assert_fails('call term_sendkeys([], "a")', 'E745:') call assert_fails('call term_sendkeys([], "a")', 'E745:')
call assert_fails('call term_setansicolors([], [])', 'E745:')
call assert_fails('call term_setapi([], "")', 'E745:') call assert_fails('call term_setapi([], "")', 'E745:')
call assert_fails('call term_setrestore([], "")', 'E745:') call assert_fails('call term_setrestore([], "")', 'E745:')
call assert_fails('call term_setkill([], "")', 'E745:') call assert_fails('call term_setkill([], "")', 'E745:')
if has('gui') || has('termguicolors')
call assert_fails('let p = term_getansicolors([])', 'E745:')
call assert_fails('call term_setansicolors([], [])', 'E745:')
endif
endfunc endfunc
" Test for sending various special keycodes to a terminal " Test for sending various special keycodes to a terminal

View File

@@ -746,6 +746,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 */
/**/
816,
/**/ /**/
815, 815,
/**/ /**/