summaryrefslogtreecommitdiff
path: root/src/testdir/test_statusline.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-10-22 14:22:16 +0200
committerBram Moolenaar <Bram@vim.org>2017-10-22 14:22:16 +0200
commit6b89dbb55f84c485310c8c9e094dbafe3ecbace6 (patch)
tree71fac531f52e81ecc490c8d484df97cd69c08ca3 /src/testdir/test_statusline.vim
parent67435d9983965c5c77fc74f0559779ce4554dacb (diff)
downloadvim-git-6b89dbb55f84c485310c8c9e094dbafe3ecbace6.tar.gz
patch 8.0.1208: 'statusline' drops empty group with highlight changev8.0.1208
Problem: 'statusline' drops empty group with highlight change. Solution: Do not drop an empty group if it changes highlighting. (Marius Gedminas, closes #2228)
Diffstat (limited to 'src/testdir/test_statusline.vim')
-rw-r--r--src/testdir/test_statusline.vim65
1 files changed, 64 insertions, 1 deletions
diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim
index 351b119ac..de943f246 100644
--- a/src/testdir/test_statusline.vim
+++ b/src/testdir/test_statusline.vim
@@ -5,7 +5,6 @@
" %N
" %T
" %X
-" %*
source view_util.vim
@@ -249,6 +248,70 @@ func Test_statusline()
call assert_equal(sa1, sa3)
call assert_notequal(sa1, sa2)
+ " An empty group that contains highlight changes
+ let g:a = ''
+ set statusline=ab%(cd%1*%{g:a}%*%)de
+ call assert_match('^abde\s*$', s:get_statusline())
+ let sa1=screenattr(&lines - 1, 1)
+ let sa2=screenattr(&lines - 1, 4)
+ call assert_equal(sa1, sa2)
+ let g:a = 'X'
+ call assert_match('^abcdXde\s*$', s:get_statusline())
+ let sa1=screenattr(&lines - 1, 1)
+ let sa2=screenattr(&lines - 1, 5)
+ let sa3=screenattr(&lines - 1, 7)
+ call assert_equal(sa1, sa3)
+ call assert_notequal(sa1, sa2)
+
+ let g:a = ''
+ set statusline=ab%1*%(cd%*%{g:a}%1*%)de
+ call assert_match('^abde\s*$', s:get_statusline())
+ let sa1=screenattr(&lines - 1, 1)
+ let sa2=screenattr(&lines - 1, 4)
+ call assert_notequal(sa1, sa2)
+ let g:a = 'X'
+ call assert_match('^abcdXde\s*$', s:get_statusline())
+ let sa1=screenattr(&lines - 1, 1)
+ let sa2=screenattr(&lines - 1, 3)
+ let sa3=screenattr(&lines - 1, 5)
+ let sa4=screenattr(&lines - 1, 7)
+ call assert_notequal(sa1, sa2)
+ call assert_equal(sa1, sa3)
+ call assert_equal(sa2, sa4)
+
+ " An empty group that contains highlight changes and doesn't reset them
+ let g:a = ''
+ set statusline=ab%(cd%1*%{g:a}%)de
+ call assert_match('^abcdde\s*$', s:get_statusline())
+ let sa1=screenattr(&lines - 1, 1)
+ let sa2=screenattr(&lines - 1, 5)
+ call assert_notequal(sa1, sa2)
+ let g:a = 'X'
+ call assert_match('^abcdXde\s*$', s:get_statusline())
+ let sa1=screenattr(&lines - 1, 1)
+ let sa2=screenattr(&lines - 1, 5)
+ let sa3=screenattr(&lines - 1, 7)
+ call assert_notequal(sa1, sa2)
+ call assert_equal(sa2, sa3)
+
+ let g:a = ''
+ set statusline=ab%1*%(cd%*%{g:a}%)de
+ call assert_match('^abcdde\s*$', s:get_statusline())
+ let sa1=screenattr(&lines - 1, 1)
+ let sa2=screenattr(&lines - 1, 3)
+ let sa3=screenattr(&lines - 1, 5)
+ call assert_notequal(sa1, sa2)
+ call assert_equal(sa1, sa3)
+ let g:a = 'X'
+ call assert_match('^abcdXde\s*$', s:get_statusline())
+ let sa1=screenattr(&lines - 1, 1)
+ let sa2=screenattr(&lines - 1, 3)
+ let sa3=screenattr(&lines - 1, 5)
+ let sa4=screenattr(&lines - 1, 7)
+ call assert_notequal(sa1, sa2)
+ call assert_equal(sa1, sa3)
+ call assert_equal(sa1, sa4)
+
" %%: a percent sign.
set statusline=10%%
call assert_match('^10%\s*$', s:get_statusline())