patch 8.2.3874: cannot highlight the number column for a sign

Problem:    Cannot highlight the number column for a sign.
Solution:   Add the "numhl" argument. (James McCoy, closes #9381)
diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim
index a1ffdf5..77bb049 100644
--- a/src/testdir/test_signs.vim
+++ b/src/testdir/test_signs.vim
@@ -15,13 +15,13 @@
   " the icon name when listing signs.
   sign define Sign1 text=x
 
-  call Sign_command_ignore_error('sign define Sign2 text=xy texthl=Title linehl=Error culhl=Search icon=../../pixmaps/stock_vim_find_help.png')
+  call Sign_command_ignore_error('sign define Sign2 text=xy texthl=Title linehl=Error culhl=Search numhl=Number icon=../../pixmaps/stock_vim_find_help.png')
 
   " Test listing signs.
   let a=execute('sign list')
   call assert_match('^\nsign Sign1 text=x \nsign Sign2 ' .
 	      \ 'icon=../../pixmaps/stock_vim_find_help.png .*text=xy ' .
-	      \ 'linehl=Error texthl=Title culhl=Search$', a)
+	      \ 'linehl=Error texthl=Title culhl=Search numhl=Number$', a)
 
   let a=execute('sign list Sign1')
   call assert_equal("\nsign Sign1 text=x ", a)
@@ -127,26 +127,34 @@
   call assert_fails("sign define Sign4 text=\\ ab  linehl=Comment", 'E239:')
 
   " an empty highlight argument for an existing sign clears it
-  sign define SignY texthl=TextHl culhl=CulHl linehl=LineHl
+  sign define SignY texthl=TextHl culhl=CulHl linehl=LineHl numhl=NumHl
   let sl = sign_getdefined('SignY')[0]
   call assert_equal('TextHl', sl.texthl)
   call assert_equal('CulHl', sl.culhl)
   call assert_equal('LineHl', sl.linehl)
+  call assert_equal('NumHl', sl.numhl)
 
-  sign define SignY texthl= culhl=CulHl linehl=LineHl
+  sign define SignY texthl= culhl=CulHl linehl=LineHl numhl=NumHl
   let sl = sign_getdefined('SignY')[0]
   call assert_false(has_key(sl, 'texthl'))
   call assert_equal('CulHl', sl.culhl)
   call assert_equal('LineHl', sl.linehl)
+  call assert_equal('NumHl', sl.numhl)
 
   sign define SignY linehl=
   let sl = sign_getdefined('SignY')[0]
   call assert_false(has_key(sl, 'linehl'))
   call assert_equal('CulHl', sl.culhl)
+  call assert_equal('NumHl', sl.numhl)
 
   sign define SignY culhl=
   let sl = sign_getdefined('SignY')[0]
   call assert_false(has_key(sl, 'culhl'))
+  call assert_equal('NumHl', sl.numhl)
+
+  sign define SignY numhl=
+  let sl = sign_getdefined('SignY')[0]
+  call assert_false(has_key(sl, 'numhl'))
 
   sign undefine SignY
 
@@ -218,15 +226,13 @@
   call assert_equal('"sign define jump list place undefine unplace', @:)
 
   call feedkeys(":sign define Sign \<C-A>\<C-B>\"\<CR>", 'tx')
-  call assert_equal('"sign define Sign icon= linehl= text= texthl=', @:)
+  call assert_equal('"sign define Sign culhl= icon= linehl= numhl= text= texthl=', @:)
 
-  call feedkeys(":sign define Sign linehl=Spell\<C-A>\<C-B>\"\<CR>", 'tx')
-  call assert_equal('"sign define Sign linehl=SpellBad SpellCap ' .
-	      \ 'SpellLocal SpellRare', @:)
-
-  call feedkeys(":sign define Sign texthl=Spell\<C-A>\<C-B>\"\<CR>", 'tx')
-  call assert_equal('"sign define Sign texthl=SpellBad SpellCap ' .
-	      \ 'SpellLocal SpellRare', @:)
+  for hl in ['culhl', 'linehl', 'numhl', 'texthl']
+    call feedkeys(":sign define Sign "..hl.."=Spell\<C-A>\<C-B>\"\<CR>", 'tx')
+    call assert_equal('"sign define Sign '..hl..'=SpellBad SpellCap ' .
+                \ 'SpellLocal SpellRare', @:)
+  endfor
 
   call writefile(repeat(["Sun is shining"], 30), "XsignOne")
   call writefile(repeat(["Sky is blue"], 30), "XsignTwo")
@@ -417,20 +423,21 @@
 
   " Tests for sign_define()
   let attr = {'text' : '=>', 'linehl' : 'Search', 'texthl' : 'Error',
-              \ 'culhl': 'Visual'}
+              \ 'culhl': 'Visual', 'numhl': 'Number'}
   call assert_equal(0, "sign1"->sign_define(attr))
-  call assert_equal([{'name' : 'sign1', 'texthl' : 'Error',
-	      \ 'linehl' : 'Search', 'culhl' : 'Visual', 'text' : '=>'}],
+  call assert_equal([{'name' : 'sign1', 'texthl' : 'Error', 'linehl' : 'Search',
+              \ 'culhl' : 'Visual', 'numhl': 'Number', 'text' : '=>'}],
               \ sign_getdefined())
 
   " Define a new sign without attributes and then update it
   call sign_define("sign2")
   let attr = {'text' : '!!', 'linehl' : 'DiffAdd', 'texthl' : 'DiffChange',
-	      \ 'culhl': 'DiffDelete', 'icon' : 'sign2.ico'}
+	      \ 'culhl': 'DiffDelete', 'numhl': 'Number', 'icon' : 'sign2.ico'}
   call Sign_define_ignore_error("sign2", attr)
   call assert_equal([{'name' : 'sign2', 'texthl' : 'DiffChange',
 	      \ 'linehl' : 'DiffAdd', 'culhl' : 'DiffDelete', 'text' : '!!',
-              \ 'icon' : 'sign2.ico'}], "sign2"->sign_getdefined())
+              \ 'numhl': 'Number', 'icon' : 'sign2.ico'}],
+              \ "sign2"->sign_getdefined())
 
   " Test for a sign name with digits
   call assert_equal(0, sign_define(0002, {'linehl' : 'StatusLine'}))