patch 8.2.3628: looking terminal colors is a bit slow

Problem:    Looking terminal colors is a bit slow.
Solution:   Cache the terminal colors. (closes #9130, closes #9058)
diff --git a/src/testdir/dumps/Test_terminal_color_MyTermCol.dump b/src/testdir/dumps/Test_terminal_color_MyTermCol.dump
new file mode 100644
index 0000000..8b16c28
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_MyTermCol.dump
@@ -0,0 +1,15 @@
+|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+> +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|5+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|6+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|7+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|8+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|9+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|0| @34
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&@1| @34
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|2| @34
+|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump b/src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump
new file mode 100644
index 0000000..8b16c28
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump
@@ -0,0 +1,15 @@
+|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+> +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|5+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|6+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|7+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|8+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|9+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|0| @34
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&@1| @34
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|2| @34
+|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_MyWinCol.dump b/src/testdir/dumps/Test_terminal_color_MyWinCol.dump
new file mode 100644
index 0000000..e89d056
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_MyWinCol.dump
@@ -0,0 +1,15 @@
+|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+> +0#ff404010#e0e0004@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|5+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|6+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|7+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|8+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|9+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|0| @34
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&@1| @34
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|2| @34
+|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump b/src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump
new file mode 100644
index 0000000..e89d056
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump
@@ -0,0 +1,15 @@
+|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+> +0#ff404010#e0e0004@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|5+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|6+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|7+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|8+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|9+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|0| @34
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&@1| @34
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|2| @34
+|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_Terminal.dump b/src/testdir/dumps/Test_terminal_color_Terminal.dump
new file mode 100644
index 0000000..9480ccf
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_Terminal.dump
@@ -0,0 +1,15 @@
+|h+0#4040ff13#ffff4012|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#4040ff13#ffff4012|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+> +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|5+0&&| @35
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|6+0&&| @35
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|7+0&&| @35
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|8+0&&| @35
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|9+0&&| @35
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|1+0&&|0| @34
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|1+0&&@1| @34
+| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|1+0&&|2| @34
+|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump b/src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump
new file mode 100644
index 0000000..363582f
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump
@@ -0,0 +1,15 @@
+|h+0#007800255#6789ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#007800255#6789ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+> +0#007800255#6789ff255@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|5+0&&| @35
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|6+0&&| @35
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|7+0&&| @35
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|8+0&&| @35
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|9+0&&| @35
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|1+0&&|0| @34
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|1+0&&@1| @34
+| +0#007800255#6789ff255@36||+1#0000000#ffffff0|1+0&&|2| @34
+|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump b/src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump
new file mode 100644
index 0000000..cb3d0c8
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump
@@ -0,0 +1,15 @@
+|h+0#fe1122255#818100255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#fe1122255#818100255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+> +0#fe1122255#818100255@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|5+0&&| @35
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|6+0&&| @35
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|7+0&&| @35
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|8+0&&| @35
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|9+0&&| @35
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|1+0&&|0| @34
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|1+0&&@1| @34
+| +0#fe1122255#818100255@36||+1#0000000#ffffff0|1+0&&|2| @34
+|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_gui_Terminal.dump b/src/testdir/dumps/Test_terminal_color_gui_Terminal.dump
new file mode 100644
index 0000000..c5455e4
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_gui_Terminal.dump
@@ -0,0 +1,15 @@
+|h+0#3344ff255#b0a700255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#3344ff255#b0a700255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+> +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|5+0&&| @35
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|6+0&&| @35
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|7+0&&| @35
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|8+0&&| @35
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|9+0&&| @35
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|1+0&&|0| @34
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|1+0&&@1| @34
+| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|1+0&&|2| @34
+|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump b/src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump
new file mode 100644
index 0000000..337c5a3
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump
@@ -0,0 +1,15 @@
+|h+0#007800255#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+|h+0#007800255&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+> +0#007800255&@36||+1#0000000&|2+0&&| @35
+| +0#007800255&@36||+1#0000000&|3+0&&| @35
+| +0#007800255&@36||+1#0000000&|4+0&&| @35
+| +0#007800255&@36||+1#0000000&|5+0&&| @35
+| +0#007800255&@36||+1#0000000&|6+0&&| @35
+| +0#007800255&@36||+1#0000000&|7+0&&| @35
+| +0#007800255&@36||+1#0000000&|8+0&&| @35
+| +0#007800255&@36||+1#0000000&|9+0&&| @35
+| +0#007800255&@36||+1#0000000&|1+0&&|0| @34
+| +0#007800255&@36||+1#0000000&|1+0&&@1| @34
+| +0#007800255&@36||+1#0000000&|1+0&&|2| @34
+|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump b/src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump
new file mode 100644
index 0000000..42cb856
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump
@@ -0,0 +1,15 @@
+|h+0#fe1122255#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+|h+0#fe1122255&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+> +0#fe1122255&@36||+1#0000000&|2+0&&| @35
+| +0#fe1122255&@36||+1#0000000&|3+0&&| @35
+| +0#fe1122255&@36||+1#0000000&|4+0&&| @35
+| +0#fe1122255&@36||+1#0000000&|5+0&&| @35
+| +0#fe1122255&@36||+1#0000000&|6+0&&| @35
+| +0#fe1122255&@36||+1#0000000&|7+0&&| @35
+| +0#fe1122255&@36||+1#0000000&|8+0&&| @35
+| +0#fe1122255&@36||+1#0000000&|9+0&&| @35
+| +0#fe1122255&@36||+1#0000000&|1+0&&|0| @34
+| +0#fe1122255&@36||+1#0000000&|1+0&&@1| @34
+| +0#fe1122255&@36||+1#0000000&|1+0&&|2| @34
+|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump b/src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump
new file mode 100644
index 0000000..3e640bf
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump
@@ -0,0 +1,15 @@
+|h+0#3344ff255#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+|h+0#3344ff255&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+> +0#3344ff255&@36||+1#0000000&|2+0&&| @35
+| +0#3344ff255&@36||+1#0000000&|3+0&&| @35
+| +0#3344ff255&@36||+1#0000000&|4+0&&| @35
+| +0#3344ff255&@36||+1#0000000&|5+0&&| @35
+| +0#3344ff255&@36||+1#0000000&|6+0&&| @35
+| +0#3344ff255&@36||+1#0000000&|7+0&&| @35
+| +0#3344ff255&@36||+1#0000000&|8+0&&| @35
+| +0#3344ff255&@36||+1#0000000&|9+0&&| @35
+| +0#3344ff255&@36||+1#0000000&|1+0&&|0| @34
+| +0#3344ff255&@36||+1#0000000&|1+0&&@1| @34
+| +0#3344ff255&@36||+1#0000000&|1+0&&|2| @34
+|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump b/src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump
new file mode 100644
index 0000000..3fe2ec1
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump
@@ -0,0 +1,15 @@
+|h+0#00e0003#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+|h+0#00e0003&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+> +0#00e0003&@36||+1#0000000&|2+0&&| @35
+| +0#00e0003&@36||+1#0000000&|3+0&&| @35
+| +0#00e0003&@36||+1#0000000&|4+0&&| @35
+| +0#00e0003&@36||+1#0000000&|5+0&&| @35
+| +0#00e0003&@36||+1#0000000&|6+0&&| @35
+| +0#00e0003&@36||+1#0000000&|7+0&&| @35
+| +0#00e0003&@36||+1#0000000&|8+0&&| @35
+| +0#00e0003&@36||+1#0000000&|9+0&&| @35
+| +0#00e0003&@36||+1#0000000&|1+0&&|0| @34
+| +0#00e0003&@36||+1#0000000&|1+0&&@1| @34
+| +0#00e0003&@36||+1#0000000&|1+0&&|2| @34
+|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump b/src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump
new file mode 100644
index 0000000..2648d5a
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump
@@ -0,0 +1,15 @@
+|h+0#ff404010#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+|h+0#ff404010&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+> +0#ff404010&@36||+1#0000000&|2+0&&| @35
+| +0#ff404010&@36||+1#0000000&|3+0&&| @35
+| +0#ff404010&@36||+1#0000000&|4+0&&| @35
+| +0#ff404010&@36||+1#0000000&|5+0&&| @35
+| +0#ff404010&@36||+1#0000000&|6+0&&| @35
+| +0#ff404010&@36||+1#0000000&|7+0&&| @35
+| +0#ff404010&@36||+1#0000000&|8+0&&| @35
+| +0#ff404010&@36||+1#0000000&|9+0&&| @35
+| +0#ff404010&@36||+1#0000000&|1+0&&|0| @34
+| +0#ff404010&@36||+1#0000000&|1+0&&@1| @34
+| +0#ff404010&@36||+1#0000000&|1+0&&|2| @34
+|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_color_transp_Terminal.dump b/src/testdir/dumps/Test_terminal_color_transp_Terminal.dump
new file mode 100644
index 0000000..33d0281
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_color_transp_Terminal.dump
@@ -0,0 +1,15 @@
+|h+0#4040ff13#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35
+|h+0#4040ff13&|e|l@1|o| @31||+1#0000000&|1+0&&| @35
+> +0#4040ff13&@36||+1#0000000&|2+0&&| @35
+| +0#4040ff13&@36||+1#0000000&|3+0&&| @35
+| +0#4040ff13&@36||+1#0000000&|4+0&&| @35
+| +0#4040ff13&@36||+1#0000000&|5+0&&| @35
+| +0#4040ff13&@36||+1#0000000&|6+0&&| @35
+| +0#4040ff13&@36||+1#0000000&|7+0&&| @35
+| +0#4040ff13&@36||+1#0000000&|8+0&&| @35
+| +0#4040ff13&@36||+1#0000000&|9+0&&| @35
+| +0#4040ff13&@36||+1#0000000&|1+0&&|0| @34
+| +0#4040ff13&@36||+1#0000000&|1+0&&@1| @34
+| +0#4040ff13&@36||+1#0000000&|1+0&&|2| @34
+|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58
diff --git a/src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump b/src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump
new file mode 100644
index 0000000..639ba98
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#40ffff15#40ff4011|═@19|╗| +0#0000000#ffffff0@26
+|5| @24|║+0#40ffff15#40ff4011|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|6| @24|║+0#40ffff15#40ff4011|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|7| @24|║+0#40ffff15#40ff4011> @19|║| +0#0000000#ffffff0@26
+|8| @24|║+0#40ffff15#40ff4011| @19|║| +0#0000000#ffffff0@26
+|9| @24|║+0#40ffff15#40ff4011| @19|║| +0#0000000#ffffff0@26
+|1|0| @23|╚+0#40ffff15#40ff4011|═@19|╝| +0#0000000#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump b/src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump
new file mode 100644
index 0000000..82fcec7
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26
+|5| @24|║+0#0000001#ffd7ff255|h+0#00e0003#5fd7ff255|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|6| @24|║+0#0000001#ffd7ff255|h+0#00e0003#5fd7ff255|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|7| @24|║+0#0000001#ffd7ff255> +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|8| @24|║+0#0000001#ffd7ff255| +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|9| @24|║+0#0000001#ffd7ff255| +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_MyWinCol.dump b/src/testdir/dumps/Test_terminal_popup_MyWinCol.dump
new file mode 100644
index 0000000..502782a
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_MyWinCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#ff404010#e0e0004|═@19|╗| +0#0000000#ffffff0@26
+|5| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|6| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|7| @24|║+0#ff404010#e0e0004> @19|║| +0#0000000#ffffff0@26
+|8| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26
+|9| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26
+|1|0| @23|╚+0#ff404010#e0e0004|═@19|╝| +0#0000000#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump b/src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump
new file mode 100644
index 0000000..502782a
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#ff404010#e0e0004|═@19|╗| +0#0000000#ffffff0@26
+|5| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|6| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|7| @24|║+0#ff404010#e0e0004> @19|║| +0#0000000#ffffff0@26
+|8| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26
+|9| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26
+|1|0| @23|╚+0#ff404010#e0e0004|═@19|╝| +0#0000000#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump
new file mode 100644
index 0000000..5eb125f
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#00e8f0255#126521255|═@19|╗| +0#0000000#ffffff0@26
+|5| @24|║+0#00e8f0255#126521255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|6| @24|║+0#00e8f0255#126521255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|7| @24|║+0#00e8f0255#126521255> @19|║| +0#0000000#ffffff0@26
+|8| @24|║+0#00e8f0255#126521255| @19|║| +0#0000000#ffffff0@26
+|9| @24|║+0#00e8f0255#126521255| @19|║| +0#0000000#ffffff0@26
+|1|0| @23|╚+0#00e8f0255#126521255|═@19|╝| +0#0000000#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump
new file mode 100644
index 0000000..a4570e4
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26
+|5| @24|║+0&#ff8bff255|h+0#007800255#6789ff255|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|6| @24|║+0&#ff8bff255|h+0#007800255#6789ff255|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|7| @24|║+0&#ff8bff255> +0#007800255#6789ff255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|8| @24|║+0&#ff8bff255| +0#007800255#6789ff255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|9| @24|║+0&#ff8bff255| +0#007800255#6789ff255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump
new file mode 100644
index 0000000..10ed686
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#fe1122255#818100255|═@19|╗| +0#0000000#ffffff0@26
+|5| @24|║+0#fe1122255#818100255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|6| @24|║+0#fe1122255#818100255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26
+|7| @24|║+0#fe1122255#818100255> @19|║| +0#0000000#ffffff0@26
+|8| @24|║+0#fe1122255#818100255| @19|║| +0#0000000#ffffff0@26
+|9| @24|║+0#fe1122255#818100255| @19|║| +0#0000000#ffffff0@26
+|1|0| @23|╚+0#fe1122255#818100255|═@19|╝| +0#0000000#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump b/src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump
new file mode 100644
index 0000000..eff82b7
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26
+|5| @24|║+0&#ff8bff255|h+0#3344ff255#b0a700255|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|6| @24|║+0&#ff8bff255|h+0#3344ff255#b0a700255|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|7| @24|║+0&#ff8bff255> +0#3344ff255#b0a700255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|8| @24|║+0&#ff8bff255| +0#3344ff255#b0a700255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|9| @24|║+0&#ff8bff255| +0#3344ff255#b0a700255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump
new file mode 100644
index 0000000..763929f
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#00e8f0255&|═@19|╗| +0#0000000&@26
+|5| @24|║+0#00e8f0255&|h|e|l@1|o| @14|║| +0#0000000&@26
+|6| @24|║+0#00e8f0255&|h|e|l@1|o| @14|║| +0#0000000&@26
+|7| @24|║+0#00e8f0255&> @19|║| +0#0000000&@26
+|8| @24|║+0#00e8f0255&| @19|║| +0#0000000&@26
+|9| @24|║+0#00e8f0255&| @19|║| +0#0000000&@26
+|1|0| @23|╚+0#00e8f0255&|═@19|╝| +0#0000000&@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump
new file mode 100644
index 0000000..f0621c1
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26
+|5| @24|║+0&#ff8bff255|h+0#007800255#ffffff0|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|6| @24|║+0&#ff8bff255|h+0#007800255#ffffff0|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|7| @24|║+0&#ff8bff255> +0#007800255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|8| @24|║+0&#ff8bff255| +0#007800255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|9| @24|║+0&#ff8bff255| +0#007800255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump
new file mode 100644
index 0000000..d7067c1
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#fe1122255&|═@19|╗| +0#0000000&@26
+|5| @24|║+0#fe1122255&|h|e|l@1|o| @14|║| +0#0000000&@26
+|6| @24|║+0#fe1122255&|h|e|l@1|o| @14|║| +0#0000000&@26
+|7| @24|║+0#fe1122255&> @19|║| +0#0000000&@26
+|8| @24|║+0#fe1122255&| @19|║| +0#0000000&@26
+|9| @24|║+0#fe1122255&| @19|║| +0#0000000&@26
+|1|0| @23|╚+0#fe1122255&|═@19|╝| +0#0000000&@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump b/src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump
new file mode 100644
index 0000000..072e2f8
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26
+|5| @24|║+0&#ff8bff255|h+0#3344ff255#ffffff0|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|6| @24|║+0&#ff8bff255|h+0#3344ff255#ffffff0|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|7| @24|║+0&#ff8bff255> +0#3344ff255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|8| @24|║+0&#ff8bff255| +0#3344ff255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|9| @24|║+0&#ff8bff255| +0#3344ff255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26
+|1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump b/src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump
new file mode 100644
index 0000000..508d812
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#40ffff15&|═@19|╗| +0#0000000&@26
+|5| @24|║+0#40ffff15&|h|e|l@1|o| @14|║| +0#0000000&@26
+|6| @24|║+0#40ffff15&|h|e|l@1|o| @14|║| +0#0000000&@26
+|7| @24|║+0#40ffff15&> @19|║| +0#0000000&@26
+|8| @24|║+0#40ffff15&| @19|║| +0#0000000&@26
+|9| @24|║+0#40ffff15&| @19|║| +0#0000000&@26
+|1|0| @23|╚+0#40ffff15&|═@19|╝| +0#0000000&@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump b/src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump
new file mode 100644
index 0000000..9336e76
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26
+|5| @24|║+0#0000001#ffd7ff255|h+0#00e0003#ffffff0|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|6| @24|║+0#0000001#ffd7ff255|h+0#00e0003#ffffff0|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|7| @24|║+0#0000001#ffd7ff255> +0#00e0003#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|8| @24|║+0#0000001#ffd7ff255| +0#00e0003#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|9| @24|║+0#0000001#ffd7ff255| +0#00e0003#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump b/src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump
new file mode 100644
index 0000000..9669964
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#ff404010&|═@19|╗| +0#0000000&@26
+|5| @24|║+0#ff404010&|h|e|l@1|o| @14|║| +0#0000000&@26
+|6| @24|║+0#ff404010&|h|e|l@1|o| @14|║| +0#0000000&@26
+|7| @24|║+0#ff404010&> @19|║| +0#0000000&@26
+|8| @24|║+0#ff404010&| @19|║| +0#0000000&@26
+|9| @24|║+0#ff404010&| @19|║| +0#0000000&@26
+|1|0| @23|╚+0#ff404010&|═@19|╝| +0#0000000&@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump b/src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump
new file mode 100644
index 0000000..828b0f5
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump
@@ -0,0 +1,15 @@
+|0+0&#ffffff0| @73
+|1| @73
+|2| @73
+|3| @73
+|4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26
+|5| @24|║+0#0000001#ffd7ff255|h+0#4040ff13#ffffff0|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|6| @24|║+0#0000001#ffd7ff255|h+0#4040ff13#ffffff0|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|7| @24|║+0#0000001#ffd7ff255> +0#4040ff13#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|8| @24|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|9| @24|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26
+|1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26
+|1@1| @72
+|1|2| @72
+|1|3| @72
+@75
diff --git a/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump b/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump
new file mode 100644
index 0000000..3633ffe
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump
@@ -0,0 +1,15 @@
+|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+> +0#ff404010#e0e0004@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|5+0&&| @35
+|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @22||+1#0000000#ffffff0|6+0&&| @35
+|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|7+0&&| @35
+|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|8+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|9+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|0| @34
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&@1| @34
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|2| @34
+|!+0#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|s|e|t| |w|i|n|c|o|l|o|r|=|M|y|W|i|n|C|o|l| @52
diff --git a/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump b/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump
new file mode 100644
index 0000000..ce69e3b
--- /dev/null
+++ b/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump
@@ -0,0 +1,15 @@
+|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|h+0#0000001#4040ff13|e|l@1|o| @31
+|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|h+0#0000001#4040ff13|e|l@1|o| @31
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0> +0#0000001#4040ff13@36
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0| +0#0000001#4040ff13@36
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0| +0#0000001#4040ff13@36
+| +0#ff404010#e0e0004@36||+1#0000000#ffffff0| +0#0000001#4040ff13@36
+|!+0#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @22||+1#0000000#ffffff0|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @22
+|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35
+|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|2+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|3+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|4+0&&| @35
+| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|5+0&&| @35
+|!+0#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23
+|:+0&&|s|e|t| |w|i|n|c|o|l|o|r|=|M|y|W|i|n|C|o|l|2| @51
diff --git a/src/testdir/test_terminal3.vim b/src/testdir/test_terminal3.vim
index f4cc38a..9f84615 100644
--- a/src/testdir/test_terminal3.vim
+++ b/src/testdir/test_terminal3.vim
@@ -66,6 +66,177 @@
   call assert_fails('terminal ++xyz', 'E181:')
 endfunc
 
+" Check a terminal with different colors
+func Terminal_color(group_name, highlight_cmds, highlight_opt, open_cmds)
+  CheckRunVimInTerminal
+  CheckUnix
+
+  let lines = [
+	\ 'call setline(1, range(20))',
+	\ 'func OpenTerm()',
+	\ '  set noruler',
+	\ "  call term_start('cat', #{vertical: 1, " .. a:highlight_opt .. "})",
+	\ ] + a:open_cmds + [
+	\ 'endfunc',
+	\ ] + a:highlight_cmds
+  call writefile(lines, 'XtermStart')
+  let buf = RunVimInTerminal('-S XtermStart', #{rows: 15})
+  call TermWait(buf, 100)
+  call term_sendkeys(buf, ":call OpenTerm()\<CR>")
+  call TermWait(buf, 50)
+  call term_sendkeys(buf, "hello\<CR>")
+  call VerifyScreenDump(buf, 'Test_terminal_color_' .. a:group_name, {})
+
+  call term_sendkeys(buf, "\<C-D>")
+  call TermWait(buf, 50)
+  call StopVimInTerminal(buf)
+  call delete('XtermStart')
+endfunc
+
+func Test_terminal_color_Terminal()
+  call Terminal_color("Terminal", [
+  \ "highlight Terminal ctermfg=blue ctermbg=yellow",
+  \ ], "", [])
+endfunc
+
+func Test_terminal_color_group()
+  call Terminal_color("MyTermCol", [
+  \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
+  \ ], "term_highlight: 'MyTermCol',", [])
+endfunc
+
+func Test_terminal_color_wincolor()
+  call Terminal_color("MyWinCol", [
+  \ "highlight MyWinCol ctermfg=red ctermbg=darkyellow",
+  \ ], "", [
+  \ 'set wincolor=MyWinCol',
+  \ ])
+endfunc
+
+func Test_terminal_color_group_over_Terminal()
+  call Terminal_color("MyTermCol_over_Terminal", [
+  \ "highlight Terminal ctermfg=blue ctermbg=yellow",
+  \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
+  \ ], "term_highlight: 'MyTermCol',", [])
+endfunc
+
+func Test_terminal_color_wincolor_over_group()
+  call Terminal_color("MyWinCol_over_group", [
+  \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
+  \ "highlight MyWinCol ctermfg=red ctermbg=darkyellow",
+  \ ], "term_highlight: 'MyTermCol',", [
+  \ 'set wincolor=MyWinCol',
+  \ ])
+endfunc
+
+func Test_terminal_color_wincolor_split()
+  CheckRunVimInTerminal
+  CheckUnix
+
+  let lines = [
+	\ 'call setline(1, range(20))',
+	\ 'func OpenTerm()',
+	\ '  set noruler',
+	\ "  call term_start('cat', #{vertical: 1, term_highlight: 'MyTermCol'})",
+	\ 'endfunc',
+  \ 'highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue',
+  \ 'highlight MyWinCol ctermfg=red ctermbg=darkyellow',
+  \ 'highlight MyWinCol2 ctermfg=black ctermbg=blue',
+	\ ]
+  call writefile(lines, 'XtermStart')
+  let buf = RunVimInTerminal('-S XtermStart', #{rows: 15})
+  call TermWait(buf, 100)
+  call term_sendkeys(buf, ":call OpenTerm()\<CR>")
+  call TermWait(buf, 50)
+  call term_sendkeys(buf, "hello\<CR>")
+  call TermWait(buf, 50)
+
+  call term_sendkeys(buf, "\<C-W>:split\<CR>")
+  call term_sendkeys(buf, "\<C-W>:set wincolor=MyWinCol\<CR>")
+  call VerifyScreenDump(buf, 'Test_terminal_wincolor_split_MyWinCol', {})
+
+  call term_sendkeys(buf, "\<C-W>b:2sb\<CR>")
+  call term_sendkeys(buf, "\<C-W>:set wincolor=MyWinCol2\<CR>")
+  call VerifyScreenDump(buf, 'Test_terminal_wincolor_split_MyWinCol2', {})
+
+  call term_sendkeys(buf, "\<C-D>")
+  call TermWait(buf, 50)
+  call StopVimInTerminal(buf)
+  call delete('XtermStart')
+endfunc
+
+func Test_terminal_color_transp_Terminal()
+  call Terminal_color("transp_Terminal", [
+  \ "highlight Terminal ctermfg=blue",
+  \ ], "", [])
+endfunc
+
+func Test_terminal_color_transp_group()
+  call Terminal_color("transp_MyTermCol", [
+  \ "highlight MyTermCol ctermfg=darkgreen",
+  \ ], "term_highlight: 'MyTermCol',", [])
+endfunc
+
+func Test_terminal_color_transp_wincolor()
+  call Terminal_color("transp_MyWinCol", [
+  \ "highlight MyWinCol ctermfg=red",
+  \ ], "", [
+  \ 'set wincolor=MyWinCol',
+  \ ])
+endfunc
+
+func Test_terminal_color_gui_Terminal()
+  CheckFeature termguicolors
+  call Terminal_color("gui_Terminal", [
+  \ "set termguicolors",
+  \ "highlight Terminal guifg=#3344ff guibg=#b0a700",
+  \ ], "", [])
+endfunc
+
+func Test_terminal_color_gui_group()
+  CheckFeature termguicolors
+  call Terminal_color("gui_MyTermCol", [
+  \ "set termguicolors",
+  \ "highlight MyTermCol guifg=#007800 guibg=#6789ff",
+  \ ], "term_highlight: 'MyTermCol',", [])
+endfunc
+
+func Test_terminal_color_gui_wincolor()
+  CheckFeature termguicolors
+  call Terminal_color("gui_MyWinCol", [
+  \ "set termguicolors",
+  \ "highlight MyWinCol guifg=#fe1122 guibg=#818100",
+  \ ], "", [
+  \ 'set wincolor=MyWinCol',
+  \ ])
+endfunc
+
+func Test_terminal_color_gui_transp_Terminal()
+  CheckFeature termguicolors
+  call Terminal_color("gui_transp_Terminal", [
+  \ "set termguicolors",
+  \ "highlight Terminal guifg=#3344ff",
+  \ ], "", [])
+endfunc
+
+func Test_terminal_color_gui_transp_group()
+  CheckFeature termguicolors
+  call Terminal_color("gui_transp_MyTermCol", [
+  \ "set termguicolors",
+  \ "highlight MyTermCol guifg=#007800",
+  \ ], "term_highlight: 'MyTermCol',", [])
+endfunc
+
+func Test_terminal_color_gui_transp_wincolor()
+  CheckFeature termguicolors
+  call Terminal_color("gui_transp_MyWinCol", [
+  \ "set termguicolors",
+  \ "highlight MyWinCol guifg=#fe1122",
+  \ ], "", [
+  \ 'set wincolor=MyWinCol',
+  \ ])
+endfunc
+
 func Test_terminal_in_popup()
   CheckRunVimInTerminal
 
@@ -180,7 +351,7 @@
 endfunc
 
 " Check a terminal in popup window with different colors
-func Terminal_in_popup_colored(group_name, highlight_cmd, highlight_opt)
+func Terminal_in_popup_color(group_name, highlight_cmds, highlight_opt, popup_cmds, popup_opt)
   CheckRunVimInTerminal
   CheckUnix
 
@@ -189,10 +360,11 @@
 	\ 'func OpenTerm()',
 	\ "  let s:buf = term_start('cat', #{hidden: 1, "
 	\ .. a:highlight_opt .. "})",
-	\ '  let g:winid = popup_create(s:buf, #{ border: []})',
+	\ '  let g:winid = popup_create(s:buf, #{border: [], '
+  \ .. a:popup_opt .. '})',
+  \ ] + a:popup_cmds + [
 	\ 'endfunc',
-	\ a:highlight_cmd,
-	\ ]
+	\ ] + a:highlight_cmds
   call writefile(lines, 'XtermPopup')
   let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
   call TermWait(buf, 100)
@@ -210,12 +382,140 @@
   call delete('XtermPopup')
 endfunc
 
-func Test_terminal_in_popup_colored_Terminal()
-  call Terminal_in_popup_colored("Terminal", "highlight Terminal ctermfg=blue ctermbg=yellow", "")
+func Test_terminal_in_popup_color_Terminal()
+  call Terminal_in_popup_color("Terminal", [
+  \ "highlight Terminal ctermfg=blue ctermbg=yellow",
+  \ ], "", [], "")
 endfunc
 
-func Test_terminal_in_popup_colored_group()
-  call Terminal_in_popup_colored("MyTermCol", "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue", "term_highlight: 'MyTermCol',")
+func Test_terminal_in_popup_color_group()
+  call Terminal_in_popup_color("MyTermCol", [
+  \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
+  \ ], "term_highlight: 'MyTermCol',", [], "")
+endfunc
+
+func Test_terminal_in_popup_color_wincolor()
+  call Terminal_in_popup_color("MyWinCol", [
+  \ "highlight MyWinCol ctermfg=red ctermbg=darkyellow",
+  \ ], "", [
+  \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
+  \ ], "")
+endfunc
+
+func Test_terminal_in_popup_color_popup_highlight()
+  call Terminal_in_popup_color("MyPopupHlCol", [
+  \ "highlight MyPopupHlCol ctermfg=cyan ctermbg=green",
+  \ ], "", [], "highlight: 'MyPopupHlCol'")
+endfunc
+
+func Test_terminal_in_popup_color_group_over_Terminal()
+  call Terminal_in_popup_color("MyTermCol_over_Terminal", [
+  \ "highlight Terminal ctermfg=blue ctermbg=yellow",
+  \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
+  \ ], "term_highlight: 'MyTermCol',", [], "")
+endfunc
+
+func Test_terminal_in_popup_color_wincolor_over_group()
+  call Terminal_in_popup_color("MyWinCol_over_group", [
+  \ "highlight MyTermCol ctermfg=darkgreen ctermbg=lightblue",
+  \ "highlight MyWinCol ctermfg=red ctermbg=darkyellow",
+  \ ], "term_highlight: 'MyTermCol',", [
+  \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
+  \ ], "")
+endfunc
+
+func Test_terminal_in_popup_color_transp_Terminal()
+  call Terminal_in_popup_color("transp_Terminal", [
+  \ "highlight Terminal ctermfg=blue",
+  \ ], "", [], "")
+endfunc
+
+func Test_terminal_in_popup_color_transp_group()
+  call Terminal_in_popup_color("transp_MyTermCol", [
+  \ "highlight MyTermCol ctermfg=darkgreen",
+  \ ], "term_highlight: 'MyTermCol',", [], "")
+endfunc
+
+func Test_terminal_in_popup_color_transp_wincolor()
+  call Terminal_in_popup_color("transp_MyWinCol", [
+  \ "highlight MyWinCol ctermfg=red",
+  \ ], "", [
+  \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
+  \ ], "")
+endfunc
+
+func Test_terminal_in_popup_color_transp_popup_highlight()
+  call Terminal_in_popup_color("transp_MyPopupHlCol", [
+  \ "highlight MyPopupHlCol ctermfg=cyan",
+  \ ], "", [], "highlight: 'MyPopupHlCol'")
+endfunc
+
+func Test_terminal_in_popup_color_gui_Terminal()
+  CheckFeature termguicolors
+  call Terminal_in_popup_color("gui_Terminal", [
+  \ "set termguicolors",
+  \ "highlight Terminal guifg=#3344ff guibg=#b0a700",
+  \ ], "", [], "")
+endfunc
+
+func Test_terminal_in_popup_color_gui_group()
+  CheckFeature termguicolors
+  call Terminal_in_popup_color("gui_MyTermCol", [
+  \ "set termguicolors",
+  \ "highlight MyTermCol guifg=#007800 guibg=#6789ff",
+  \ ], "term_highlight: 'MyTermCol',", [], "")
+endfunc
+
+func Test_terminal_in_popup_color_gui_wincolor()
+  CheckFeature termguicolors
+  call Terminal_in_popup_color("gui_MyWinCol", [
+  \ "set termguicolors",
+  \ "highlight MyWinCol guifg=#fe1122 guibg=#818100",
+  \ ], "", [
+  \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
+  \ ], "")
+endfunc
+
+func Test_terminal_in_popup_color_gui_popup_highlight()
+  CheckFeature termguicolors
+  call Terminal_in_popup_color("gui_MyPopupHlCol", [
+  \ "set termguicolors",
+  \ "highlight MyPopupHlCol guifg=#00e8f0 guibg=#126521",
+  \ ], "", [], "highlight: 'MyPopupHlCol'")
+endfunc
+
+func Test_terminal_in_popup_color_gui_transp_Terminal()
+  CheckFeature termguicolors
+  call Terminal_in_popup_color("gui_transp_Terminal", [
+  \ "set termguicolors",
+  \ "highlight Terminal guifg=#3344ff",
+  \ ], "", [], "")
+endfunc
+
+func Test_terminal_in_popup_color_gui_transp_group()
+  CheckFeature termguicolors
+  call Terminal_in_popup_color("gui_transp_MyTermCol", [
+  \ "set termguicolors",
+  \ "highlight MyTermCol guifg=#007800",
+  \ ], "term_highlight: 'MyTermCol',", [], "")
+endfunc
+
+func Test_terminal_in_popup_color_gui_transp_wincolor()
+  CheckFeature termguicolors
+  call Terminal_in_popup_color("gui_transp_MyWinCol", [
+  \ "set termguicolors",
+  \ "highlight MyWinCol guifg=#fe1122",
+  \ ], "", [
+  \ 'call setwinvar(g:winid, "&wincolor", "MyWinCol")',
+  \ ], "")
+endfunc
+
+func Test_terminal_in_popup_color_gui_transp_popup_highlight()
+  CheckFeature termguicolors
+  call Terminal_in_popup_color("gui_transp_MyPopupHlCol", [
+  \ "set termguicolors",
+  \ "highlight MyPopupHlCol guifg=#00e8f0",
+  \ ], "", [], "highlight: 'MyPopupHlCol'")
 endfunc
 
 func Test_double_popup_terminal()
@@ -411,7 +711,7 @@
   call TermWait(buf, 50)
   call assert_equal('yellow', readfile('Xbuf')[0])
 
-  " Test for selecting text using doubleclick
+  " Test for selecting text using double click
   call delete('Xbuf')
   call test_setmouse(1, 11)
   call term_sendkeys(buf, "\<LeftMouse>\<LeftRelease>\<LeftMouse>")
@@ -431,7 +731,7 @@
   call TermWait(buf, 50)
   call assert_equal("vim emacs sublime nano\n", readfile('Xbuf')[0])
 
-  " Test for selecting a block using qudraple click
+  " Test for selecting a block using quadruple click
   call delete('Xbuf')
   call test_setmouse(1, 11)
   call term_sendkeys(buf, "\<LeftMouse>\<LeftRelease>\<LeftMouse>\<LeftRelease>\<LeftMouse>\<LeftRelease>\<LeftMouse>")