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)
diff --git a/src/channel.c b/src/channel.c
index 68adbc3..2b85ec9 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -5308,6 +5308,7 @@
{
char_u *color_name;
guicolor_T guicolor;
+ int called_emsg_before = called_emsg;
color_name = tv_get_string_chk(&li->li_tv);
if (color_name == NULL)
@@ -5315,7 +5316,12 @@
guicolor = GUI_GET_COLOR(color_name);
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;
+ }
rgb[n] = GUI_MCH_GET_RGB(guicolor);
}
diff --git a/src/globals.h b/src/globals.h
index 60c3c66..648da7d 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1767,6 +1767,9 @@
EXTERN char e_lock_unlock[] INIT(= N_("E940: Cannot lock or unlock variable %s"));
#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
EXTERN short disallow_gui INIT(= FALSE);
diff --git a/src/gui.c b/src/gui.c
index 13b65cb..93b8bb6 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -4741,7 +4741,7 @@
&& gui.in_use
#endif
)
- semsg(_("E254: Cannot allocate color %s"), name);
+ semsg(_(e_alloc_color), name);
return t;
}
diff --git a/src/term.c b/src/term.c
index e79fa5e..5880589 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1381,7 +1381,7 @@
t = termgui_mch_get_color(name);
if (t == INVALCOLOR)
- semsg(_("E254: Cannot allocate color %s"), name);
+ semsg(_(e_alloc_color), name);
return t;
}
@@ -1587,9 +1587,9 @@
log_tr("Received t_Co, redraw_asap(): %d", r);
}
-#else
+# else
redraw_asap(CLEAR);
-#endif
+# endif
}
}
#endif
@@ -1597,10 +1597,10 @@
#ifdef HAVE_TGETENT
static char *(key_names[]) =
{
-#ifdef FEAT_TERMRESPONSE
+# ifdef FEAT_TERMRESPONSE
// Do this one first, it may cause a screen redraw.
"Co",
-#endif
+# endif
"ku", "kd", "kr", "kl",
"#2", "#4", "%i", "*7",
"k1", "k2", "k3", "k4", "k5", "k6",
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index bb9cdc7..a8a549c 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1009,13 +1009,17 @@
call assert_fails(cmd, 'E475:')
let cmd = "call term_start('', {'term_highlight' : []})"
call assert_fails(cmd, 'E475:')
- if has('gui')
+ if has('gui') || has('termguicolors')
let cmd = "call term_start('', {'ansi_colors' : 'abc'})"
call assert_fails(cmd, 'E475:')
let cmd = "call term_start('', {'ansi_colors' : [[]]})"
call assert_fails(cmd, 'E730:')
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
endfunc
@@ -2668,7 +2672,6 @@
" Test for passing invalid arguments to terminal functions
func Test_term_func_invalid_arg()
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 c = term_getcursor([])', 'E745:')
call assert_fails('let l = term_getline([], 1)', 'E745:')
@@ -2677,10 +2680,13 @@
call assert_fails('let s = term_getstatus([])', 'E745:')
call assert_fails('let s = term_scrape([], 1)', '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_setrestore([], "")', '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
" Test for sending various special keycodes to a terminal
diff --git a/src/version.c b/src/version.c
index 543f5a8..f2afc0b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 816,
+/**/
815,
/**/
814,