diff src/testdir/test_highlight.vim @ 26145:3da380450cce v8.2.3605

patch 8.2.3605: cannot clear and unlinke a highlight group with hlset() Commit: https://github.com/vim/vim/commit/2a16dc6613368c54d526850bcbcd03c3fec1be67 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Tue Nov 16 17:19:30 2021 +0000 patch 8.2.3605: cannot clear and unlinke a highlight group with hlset() Problem: Cannot clear and unlinke a highlight group with hlset() in a single call. Solution: Add the "force" option. (Yegappan Lakshmanan, closes #9117)
author Bram Moolenaar <Bram@vim.org>
date Tue, 16 Nov 2021 18:30:04 +0100
parents 0db507389fdb
children 84eb3e0ad3f4
line wrap: on
line diff
--- a/src/testdir/test_highlight.vim
+++ b/src/testdir/test_highlight.vim
@@ -1046,9 +1046,6 @@ endfunc
 
 " Test for the hlset() function
 func Test_hlset()
-  let save_columns = &columns
-  let &columns = 80
-
   let lines =<< trim END
     call assert_equal(0, hlset(test_null_list()))
     call assert_equal(0, hlset([]))
@@ -1126,12 +1123,10 @@ func Test_hlset()
                 \ 'standout': v:true, 'nocombine': v:true}
     call hlset([{'name': 'myhlg2', 'term': attr, 'cterm': attr, 'gui': attr}])
     VAR id2 = hlID('myhlg2')
-    VAR output =<< trim END
-      myhlg2         xxx term=bold,standout,underline,undercurl,italic,reverse,nocombine,strikethrough
-                         cterm=bold,standout,underline,undercurl,italic,reverse,nocombine,strikethrough
-                         gui=bold,standout,underline,undercurl,italic,reverse,nocombine,strikethrough
-    END
-    call assert_equal(output, execute('highlight myhlg2')->split("\n"))
+    VAR expected = "myhlg2 xxx term=bold,standout,underline,undercurl,italic,reverse,nocombine,strikethrough cterm=bold,standout,underline,undercurl,italic,reverse,nocombine,strikethrough gui=bold,standout,underline,undercurl,italic,reverse,nocombine,strikethrough"
+    VAR output = execute('highlight myhlg2')
+    LET output = output->split("\n")->join()->substitute('\s\+', ' ', 'g')
+    call assert_equal(expected, output)
     call assert_equal([{'id': id2, 'name': 'myhlg2', 'gui': attr,
                       \ 'term': attr, 'cterm': attr}], hlget('myhlg2'))
   END
@@ -1143,18 +1138,96 @@ func Test_hlset()
     VAR attr = {'bold': v:false, 'underline': v:true, 'strikethrough': v:true}
     call hlset([{'name': 'myhlg2', 'term': attr, 'cterm': attr, 'gui': attr}])
     VAR id2 = hlID('myhlg2')
-    VAR output =<< trim END
-      myhlg2         xxx term=underline,strikethrough cterm=underline,strikethrough
-                         gui=underline,strikethrough
-    END
-    call assert_equal(output, execute('highlight myhlg2')->split("\n"))
+    VAR expected = "myhlg2 xxx term=underline,strikethrough cterm=underline,strikethrough gui=underline,strikethrough"
+    VAR output = execute('highlight myhlg2')
+    LET output = output->split("\n")->join()->substitute('\s\+', ' ', 'g')
+    call assert_equal(expected, output)
     LET attr = {'underline': v:true, 'strikethrough': v:true}
     call assert_equal([{'id': id2, 'name': 'myhlg2', 'gui': attr,
                       \ 'term': attr, 'cterm': attr}], hlget('myhlg2'))
   END
   call CheckLegacyAndVim9Success(lines)
 
-  let &columns = save_columns
+  " Test for clearing the attributes and link of a highlight group
+  let lines =<< trim END
+    highlight myhlg3 ctermbg=green guibg=green
+    highlight! default link myhlg3 ErrorMsg
+    VAR id3 = hlID('myhlg3')
+    call hlset([{'name': 'myhlg3', 'cleared': v:true, 'linksto': 'NONE'}])
+    call assert_equal([{'id': id3, 'name': 'myhlg3', 'cleared': v:true}],
+                      \ hlget('myhlg3'))
+    highlight clear hlg3
+  END
+  call CheckLegacyAndVim9Success(lines)
+
+  " Test for setting default attributes for a highlight group
+  let lines =<< trim END
+    call hlset([{'name': 'hlg4', 'ctermfg': '8'}])
+    call hlset([{'name': 'hlg4', 'default': v:true, 'ctermfg': '9'}])
+    VAR id4 = hlID('hlg4')
+    call assert_equal([{'id': id4, 'name': 'hlg4', 'ctermfg': '8'}],
+                    \ hlget('hlg4'))
+    highlight clear hlg4
+
+    call hlset([{'name': 'hlg5', 'default': v:true, 'ctermbg': '2'}])
+    call hlset([{'name': 'hlg5', 'ctermbg': '4'}])
+    VAR id5 = hlID('hlg5')
+    call assert_equal([{'id': id5, 'name': 'hlg5', 'ctermbg': '4'}],
+                    \ hlget('hlg5'))
+    highlight clear hlg5
+
+    call hlset([{'name': 'hlg6', 'linksto': 'Error'}])
+    VAR id6 = hlID('hlg6')
+    call hlset([{'name': 'hlg6', 'default': v:true, 'ctermbg': '2'}])
+    call assert_equal([{'id': id6, 'name': 'hlg6', 'linksto': 'Error'}],
+                    \ hlget('hlg6'))
+    highlight clear hlg6
+  END
+  call CheckLegacyAndVim9Success(lines)
+
+  " Test for setting default links for a highlight group
+  let lines =<< trim END
+    call hlset([{'name': 'hlg7', 'ctermfg': '5'}])
+    call hlset([{'name': 'hlg7', 'default': v:true, 'linksto': 'Search'}])
+    VAR id7 = hlID('hlg7')
+    call assert_equal([{'id': id7, 'name': 'hlg7', 'ctermfg': '5'}],
+                    \ hlget('hlg7'))
+    highlight clear hlg7
+
+    call hlset([{'name': 'hlg8', 'default': v:true, 'linksto': 'Search'}])
+    VAR id8 = hlID('hlg8')
+    call assert_equal([{'id': id8, 'name': 'hlg8', 'default': v:true,
+                    \ 'linksto': 'Search'}], hlget('hlg8'))
+    call hlset([{'name': 'hlg8', 'ctermbg': '2'}])
+    call assert_equal([{'id': id8, 'name': 'hlg8', 'ctermbg': '2'}],
+                    \ hlget('hlg8'))
+    highlight clear hlg8
+
+    highlight default link hlg9 ErrorMsg
+    VAR hlg_save = hlget('hlg9')
+    LET hlg_save[0]['name'] = 'hlg9dup'
+    call hlset(hlg_save)
+    VAR id9 = hlID('hlg9dup')
+    highlight clear hlg9dup
+    call assert_equal([{'id': id9, 'name': 'hlg9dup', 'default': v:true,
+                    \ 'linksto': 'ErrorMsg'}], hlget('hlg9dup'))
+    highlight clear hlg9
+  END
+  call CheckLegacyAndVim9Success(lines)
+
+  " Test for force creating a link to a highlight group
+  let lines =<< trim END
+    call hlset([{'name': 'hlg10', 'ctermfg': '8'}])
+    call hlset([{'name': 'hlg10', 'linksto': 'Search'}])
+    VAR id10 = hlID('hlg10')
+    call assert_equal([{'id': id10, 'name': 'hlg10', 'ctermfg': '8'}],
+                    \ hlget('hlg10'))
+    call hlset([{'name': 'hlg10', 'linksto': 'Search', 'force': v:true}])
+    call assert_equal([{'id': id10, 'name': 'hlg10', 'ctermfg': '8',
+                    \ 'linksto': 'Search'}], hlget('hlg10'))
+    highlight clear hlg10
+  END
+  call CheckLegacyAndVim9Success(lines)
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab