]> granicus.if.org Git - vim/commitdiff
patch 8.1.2229: cannot color number column above/below cursor differently v8.1.2229
authorBram Moolenaar <Bram@vim.org>
Sun, 27 Oct 2019 21:54:58 +0000 (22:54 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 27 Oct 2019 21:54:58 +0000 (22:54 +0100)
Problem:    Cannot color number column above/below cursor differently.
Solution:   Add LineNrAbove and LineNrBelow. (Shaun Brady, closes #624)

runtime/doc/options.txt
runtime/doc/syntax.txt
src/drawline.c
src/optiondefs.h
src/testdir/dumps/Test_relnr_colors_1.dump [new file with mode: 0644]
src/testdir/dumps/Test_relnr_colors_2.dump [new file with mode: 0644]
src/testdir/dumps/Test_relnr_colors_3.dump [new file with mode: 0644]
src/testdir/dumps/Test_relnr_colors_4.dump [new file with mode: 0644]
src/testdir/test_number.vim
src/version.c
src/vim.h

index 82cac9df12d91da9d96872c10286e132a33acc32..1ef944d62db13c59deef7e47d1aa27d333c90255 100644 (file)
@@ -3923,6 +3923,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                                     "8:SpecialKey,~:EndOfBuffer,@:NonText,
                                     d:Directory,e:ErrorMsg,i:IncSearch,
                                     l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,
+                                    a:LineNrAbove,b:LineNrBelow,
                                     N:CursorLineNr,r:Question,s:StatusLine,
                                     S:StatusLineNC,c:VertSplit,t:Title,
                                     v:Visual,V:VisualNOS,w:WarningMsg,
@@ -3954,6 +3955,10 @@ A jump table for the options with a short description can be found at |Q_op|.
        |hl-ModeMsg|     M  Mode (e.g., "-- INSERT --")
        |hl-LineNr|      n  line number for ":number" and ":#" commands, and
                            when 'number' or 'relativenumber' option is set.
+       |hl-LineNrAbove|   a  line number above the cursor for when the
+                           'relativenumber' option is set.
+       |hl-LineNrBelow|   b  line number below the cursor for when the
+                           'relativenumber' option is set.
        |hl-CursorLineNr|  N like n for when 'cursorline' or 'relativenumber' is
                            set.
        |hl-Question|    r  |hit-enter| prompt and yes/no questions
index e45ff81951c5c454589f6d138a7d7a07d5f0ff35..1c4988ade8b560247d45e9dfbb1db5ea62098ea1 100644 (file)
@@ -5071,6 +5071,12 @@ IncSearch        'incsearch' highlighting; also used for the text replaced with
                                                        *hl-LineNr*
 LineNr         Line number for ":number" and ":#" commands, and when 'number'
                or 'relativenumber' option is set.
+                                                       *hl-LineNrAbove*
+LineNrAbove    Line number for when the 'relativenumber'
+               option is set, above the cursor line.
+                                                       *hl-LineNrBelow*
+LineNrBelow    Line number for when the 'relativenumber'
+               option is set, below the cursor line.
                                                        *hl-CursorLineNr*
 CursorLineNr   Like LineNr when 'cursorline' is set and 'cursorlineopt' is
                set to "number" or "both", or 'relativenumber' is set, for
index 869bdaa0efeb4190effb9eca290b09de556ef9ac..7caba051b6ce868070405a94f64e85f3f33a9a55 100644 (file)
@@ -1127,6 +1127,16 @@ win_line(
                                  || wp->w_p_culopt_flags & CULOPT_LINE))
                        char_attr = hl_combine_attr(wcr_attr, HL_ATTR(HLF_CLN));
 #endif
+                     if (wp->w_p_rnu && lnum < wp->w_cursor.lnum
+                                                     && HL_ATTR(HLF_LNA) != 0)
+                         // Use LineNrAbove
+                         char_attr = hl_combine_attr(wcr_attr,
+                                                            HL_ATTR(HLF_LNA));
+                     if (wp->w_p_rnu && lnum > wp->w_cursor.lnum
+                                                     && HL_ATTR(HLF_LNB) != 0)
+                         // Use LineNrBelow
+                         char_attr = hl_combine_attr(wcr_attr,
+                                                            HL_ATTR(HLF_LNB));
                    }
                }
            }
index b557771cfbe380d2a76e2d3c087eb0179a7e00f6..a1d37f8341d23820fb46748e9c53adf674d478ee 100644 (file)
@@ -289,7 +289,7 @@ struct vimoption
 # define ISP_LATIN1 (char_u *)"@,161-255"
 #endif
 
-# define HIGHLIGHT_INIT "8:SpecialKey,~:EndOfBuffer,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn,q:QuickFixLine,z:StatusLineTerm,Z:StatusLineTermNC"
+# define HIGHLIGHT_INIT "8:SpecialKey,~:EndOfBuffer,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,a:LineNrAbove,b:LineNrBelow,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn,q:QuickFixLine,z:StatusLineTerm,Z:StatusLineTermNC"
 
 // Default python version for pyx* commands
 #if defined(FEAT_PYTHON) && defined(FEAT_PYTHON3)
diff --git a/src/testdir/dumps/Test_relnr_colors_1.dump b/src/testdir/dumps/Test_relnr_colors_1.dump
new file mode 100644 (file)
index 0000000..ad0ddd9
--- /dev/null
@@ -0,0 +1,10 @@
+| +0#ff404010#ffffff0@1|4| |1+0#0000000&|0|6| @42
+| +0#ff404010&@1|3| |1+0#0000000&|0|7| @42
+| +0#ff404010&@1|2| |1+0#0000000&|0|8| @42
+| +0#ff404010&@1|1| |1+0#0000000&|0|9| @42
+|1+0#ff404010&@2| >1+0#0000000&@1|0| @42
+| +0#ff404010&@1|1| |1+0#0000000&@2| @42
+| +0#ff404010&@1|2| |1+0#0000000&@1|2| @42
+| +0#ff404010&@1|3| |1+0#0000000&@1|3| @42
+| +0#ff404010&@1|4| |1+0#0000000&@1|4| @42
+@32|1@2|,|1| @8|5@1|%| 
diff --git a/src/testdir/dumps/Test_relnr_colors_2.dump b/src/testdir/dumps/Test_relnr_colors_2.dump
new file mode 100644 (file)
index 0000000..0e80fc6
--- /dev/null
@@ -0,0 +1,10 @@
+| +0#4040ff13#ffffff0@1|4| |1+0#0000000&|0|6| @42
+| +0#4040ff13&@1|3| |1+0#0000000&|0|7| @42
+| +0#4040ff13&@1|2| |1+0#0000000&|0|8| @42
+| +0#4040ff13&@1|1| |1+0#0000000&|0|9| @42
+|1+0#ff404010&@2| >1+0#0000000&@1|0| @42
+| +0#ff404010&@1|1| |1+0#0000000&@2| @42
+| +0#ff404010&@1|2| |1+0#0000000&@1|2| @42
+| +0#ff404010&@1|3| |1+0#0000000&@1|3| @42
+| +0#ff404010&@1|4| |1+0#0000000&@1|4| @42
+|:|h|i| |L|i|n|e|N|r|A|b|o|v|e| |c|t|e|r|m|f|g|=|b|l|u|e| @3|1@2|,|1| @8|5@1|%| 
diff --git a/src/testdir/dumps/Test_relnr_colors_3.dump b/src/testdir/dumps/Test_relnr_colors_3.dump
new file mode 100644 (file)
index 0000000..f54a5be
--- /dev/null
@@ -0,0 +1,10 @@
+| +0#4040ff13#ffffff0@1|4| |1+0#0000000&|0|6| @42
+| +0#4040ff13&@1|3| |1+0#0000000&|0|7| @42
+| +0#4040ff13&@1|2| |1+0#0000000&|0|8| @42
+| +0#4040ff13&@1|1| |1+0#0000000&|0|9| @42
+|1+0#ff404010&@2| >1+0#0000000&@1|0| @42
+| +0#40ff4011&@1|1| |1+0#0000000&@2| @42
+| +0#40ff4011&@1|2| |1+0#0000000&@1|2| @42
+| +0#40ff4011&@1|3| |1+0#0000000&@1|3| @42
+| +0#40ff4011&@1|4| |1+0#0000000&@1|4| @42
+|:|h|i| |L|i|n|e|N|r|B|e|l|o|w| |c|t|e|r|m|f|g|=|g|r|e@1|n| @2|1@2|,|1| @8|5@1|%| 
diff --git a/src/testdir/dumps/Test_relnr_colors_4.dump b/src/testdir/dumps/Test_relnr_colors_4.dump
new file mode 100644 (file)
index 0000000..8202819
--- /dev/null
@@ -0,0 +1,10 @@
+| +0#ff404010#ffffff0@1|4| |1+0#0000000&|0|6| @42
+| +0#ff404010&@1|3| |1+0#0000000&|0|7| @42
+| +0#ff404010&@1|2| |1+0#0000000&|0|8| @42
+| +0#ff404010&@1|1| |1+0#0000000&|0|9| @42
+|1+0#ff404010&@2| >1+0#0000000&@1|0| @42
+| +0#40ff4011&@1|1| |1+0#0000000&@2| @42
+| +0#40ff4011&@1|2| |1+0#0000000&@1|2| @42
+| +0#40ff4011&@1|3| |1+0#0000000&@1|3| @42
+| +0#40ff4011&@1|4| |1+0#0000000&@1|4| @42
+|:|h|i| |c|l|e|a|r| |L|i|n|e|N|r|A|b|o|v|e| @10|1@2|,|1| @8|5@1|%| 
index 81326bce147d0ab82c6c4f3472a72a96bb9c8a34..54175851361e83045dffeed66498d5fb03161936 100644 (file)
@@ -1,7 +1,10 @@
 " Test for 'number' and 'relativenumber'
 
+source check.vim
 source view_util.vim
 
+source screendump.vim
+
 func s:screen_lines(start, end) abort
   return ScreenLines([a:start, a:end], 8)
 endfunc
@@ -263,3 +266,34 @@ func Test_relativenumber_uninitialised()
   redraw
   bwipe!
 endfunc
+
+func Test_relativenumber_colors()
+  CheckScreendump
+
+  let lines =<< trim [CODE]
+    call setline(1, range(200))
+    111
+    set number relativenumber
+    hi LineNr ctermfg=red
+  [CODE]
+  call writefile(lines, 'XTest_relnr')
+
+  " Check that the balloon shows up after a mouse move
+  let buf = RunVimInTerminal('-S XTest_relnr', {'rows': 10, 'cols': 50})
+  call term_wait(buf, 100)
+  " Default colors
+  call VerifyScreenDump(buf, 'Test_relnr_colors_1', {})
+
+  call term_sendkeys(buf, ":hi LineNrAbove ctermfg=blue\<CR>")
+  call VerifyScreenDump(buf, 'Test_relnr_colors_2', {})
+
+  call term_sendkeys(buf, ":hi LineNrBelow ctermfg=green\<CR>")
+  call VerifyScreenDump(buf, 'Test_relnr_colors_3', {})
+
+  call term_sendkeys(buf, ":hi clear LineNrAbove\<CR>")
+  call VerifyScreenDump(buf, 'Test_relnr_colors_4', {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+  call delete('XTest_relnr')
+endfunc
index 01c95b335f95120019bc12bf4bae763056e96476..350f596027cc491f1923dbf11080fad8fb6b9725 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2229,
 /**/
     2228,
 /**/
index 230f5b3f8d6fe2712f65ec07e5e2ed106cb19dbf..7b2aa5be5ba1e6333102f085015f8d5e20374d66 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -1382,6 +1382,8 @@ typedef enum
     , HLF_M        // "--More--" message
     , HLF_CM       // Mode (e.g., "-- INSERT --")
     , HLF_N        // line number for ":number" and ":#" commands
+    , HLF_LNA      // LineNrAbove
+    , HLF_LNB      // LineNrBelow
     , HLF_CLN      // current line number
     , HLF_R        // return to continue message and yes/no questions
     , HLF_S        // status lines
@@ -1423,8 +1425,8 @@ typedef enum
 // The HL_FLAGS must be in the same order as the HLF_ enums!
 // When changing this also adjust the default for 'highlight'.
 #define HL_FLAGS {'8', '~', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \
-                 'n', 'N', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \
-                 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \
+                 'n', 'a', 'b', 'N', 'r', 's', 'S', 'c', 't', 'v', 'V', \
+                 'w', 'W', 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \
                  'B', 'P', 'R', 'L', \
                  '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o', 'q', \
                  'z', 'Z'}