summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-08-31 21:17:10 +0100
committerBram Moolenaar <Bram@vim.org>2022-08-31 21:17:10 +0100
commit5d09a401ec393dc930e1104ceb38eab34681de64 (patch)
tree2b9f540edb9197ecaf64fd308cd35c354a65bf45
parent21c3a80a7fd6b7fc250ce5dc287963511f54b86f (diff)
downloadvim-git-5d09a401ec393dc930e1104ceb38eab34681de64.tar.gz
patch 9.0.0343: ColorScheme autocommand triggered when colorscheme not foundv9.0.0343
Problem: ColorScheme autocommand triggered when colorscheme is not found. (Romain Lafourcade) Solution: Only trigger ColorScheme when loading the colorscheme succeeds. (closes #11024)
-rw-r--r--src/highlight.c4
-rw-r--r--src/testdir/test_gui.vim12
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 3 deletions
diff --git a/src/highlight.c b/src/highlight.c
index 95cdb46b5..303d5c294 100644
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -507,7 +507,9 @@ load_colors(char_u *name)
sprintf((char *)buf, "colors/%s.vim", name);
retval = source_runtime(buf, DIP_START + DIP_OPT);
vim_free(buf);
- apply_autocmds(EVENT_COLORSCHEME, name, curbuf->b_fname, FALSE, curbuf);
+ if (retval == OK)
+ apply_autocmds(EVENT_COLORSCHEME, name, curbuf->b_fname,
+ FALSE, curbuf);
}
recursive = FALSE;
diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim
index ed40c256c..afac5ccb9 100644
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -36,8 +36,12 @@ func Test_colorscheme()
let g:color_count = 0
augroup TestColors
au!
- au ColorScheme * let g:color_count += 1| let g:after_colors = g:color_count
- au ColorSchemePre * let g:color_count += 1 |let g:before_colors = g:color_count
+ au ColorScheme * let g:color_count += 1
+ \ | let g:after_colors = g:color_count
+ \ | let g:color_after = expand('<amatch>')
+ au ColorSchemePre * let g:color_count += 1
+ \ | let g:before_colors = g:color_count
+ \ | let g:color_pre = expand('<amatch>')
augroup END
colorscheme torte
@@ -45,6 +49,8 @@ func Test_colorscheme()
call assert_equal('dark', &background)
call assert_equal(1, g:before_colors)
call assert_equal(2, g:after_colors)
+ call assert_equal('torte', g:color_pre)
+ call assert_equal('torte', g:color_after)
call assert_equal("\ntorte", execute('colorscheme'))
let a = substitute(execute('hi Search'), "\n\\s\\+", ' ', 'g')
@@ -53,6 +59,8 @@ func Test_colorscheme()
call assert_match("\nSearch xxx term=reverse ", a)
call assert_fails('colorscheme does_not_exist', 'E185:')
+ call assert_equal('does_not_exist', g:color_pre)
+ call assert_equal('torte', g:color_after)
exec 'colorscheme' colorscheme_saved
augroup TestColors
diff --git a/src/version.c b/src/version.c
index 68f7baa72..f2991b872 100644
--- a/src/version.c
+++ b/src/version.c
@@ -708,6 +708,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 343,
+/**/
342,
/**/
341,