Add EndOfBuffer hl group for ~ lines after the last line in buffers

This makes it possible to highlight the lines starting with ~ at the end
of buffers and other elements highlighted using NonText.

As proposed by mhinz at
https://groups.google.com/forum/#!topic/vim_dev/p3de1iU1GXI/discussion
This commit is contained in:
Marco Hinz 2015-02-01 20:28:23 -03:00 committed by Justin M. Keyes
parent 84ca5f973d
commit 4d70aae770
7 changed files with 30 additions and 25 deletions

View File

@ -3784,17 +3784,16 @@ A jump table for the options with a short description can be found at |Q_op|.
*'highlight'* *'hl'* *'highlight'* *'hl'*
'highlight' 'hl' string (default (as a single string): 'highlight' 'hl' string (default (as a single string):
"8:SpecialKey,@:NonText,d:Directory, "8:SpecialKey,~:EndOfBuffer,@:NonText,i
e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg, d:Directory,e:ErrorMsg,i:IncSearch,
M:ModeMsg,n:LineNr,N:CursorLineNr, l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,
r:Question,s:StatusLine,S:StatusLineNC, N:CursorLineNr,r:Question,s:StatusLine,
c:VertSplit, t:Title,v:Visual, S:StatusLineNC,c:VertSplit,t:Title,
w:WarningMsg,W:WildMenu, v:Visual,w:WarningMsg,W:WildMenu,f:Folded,
f:Folded,F:FoldColumn,A:DiffAdd, F:FoldColumn,A:DiffAdd,C:DiffChange,
C:DiffChange,D:DiffDelete,T:DiffText, D:DiffDelete,T:DiffText,>:SignColumn,
>:SignColumn,B:SpellBad,P:SpellCap, B:SpellBad,P:SpellCap,R:SpellRare,
R:SpellRare,L:SpellLocal,-:Conceal, L:SpellLocal,-:Conceal,+:Pmenu,=:PmenuSel,
+:Pmenu,=:PmenuSel,
x:PmenuSbar,X:PmenuThumb") x:PmenuSbar,X:PmenuThumb")
global global
{not in Vi} {not in Vi}
@ -3803,7 +3802,8 @@ A jump table for the options with a short description can be found at |Q_op|.
first character in a pair gives the occasion, the second the mode to first character in a pair gives the occasion, the second the mode to
use for that occasion. The occasions are: use for that occasion. The occasions are:
|hl-SpecialKey| 8 Meta and special keys listed with ":map" |hl-SpecialKey| 8 Meta and special keys listed with ":map"
|hl-NonText| @ '~' and '@' at the end of the window and |hl-EndOfBuffer| ~ lines after the last line in the buffer
|hl-NonText| @ '@' at the end of the window and
characters from 'showbreak' characters from 'showbreak'
|hl-Directory| d directories in CTRL-D listing and other special |hl-Directory| d directories in CTRL-D listing and other special
things in listings things in listings

View File

@ -4761,6 +4761,9 @@ DiffChange diff mode: Changed line |diff.txt|
DiffDelete diff mode: Deleted line |diff.txt| DiffDelete diff mode: Deleted line |diff.txt|
*hl-DiffText* *hl-DiffText*
DiffText diff mode: Changed text within a changed line |diff.txt| DiffText diff mode: Changed text within a changed line |diff.txt|
*hl-EndOfBuffer*
EndOfBuffer filler lines (~) after the end of the buffer.
By default, this is highlighted like |hl-NonText|.
*hl-ErrorMsg* *hl-ErrorMsg*
ErrorMsg error messages on the command line ErrorMsg error messages on the command line
*hl-VertSplit* *hl-VertSplit*
@ -4789,10 +4792,10 @@ ModeMsg 'showmode' message (e.g., "-- INSERT --")
*hl-MoreMsg* *hl-MoreMsg*
MoreMsg |more-prompt| MoreMsg |more-prompt|
*hl-NonText* *hl-NonText*
NonText '~' and '@' at the end of the window, characters from NonText '@' at the end of the window, characters from 'showbreak'
'showbreak' and other characters that do not really exist in and other characters that do not really exist in the text
the text (e.g., ">" displayed when a double-wide character (e.g., ">" displayed when a double-wide character doesn't
doesn't fit at the end of the line). fit at the end of the line). See also |hl-EndOfBuffer|.
*hl-Normal* *hl-Normal*
Normal normal text Normal normal text
*hl-Pmenu* *hl-Pmenu*

View File

@ -68,7 +68,7 @@ syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePo
syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
" Default highlighting groups {{{2 " Default highlighting groups {{{2
syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
syn match vimHLGroup contained "Conceal" syn match vimHLGroup contained "Conceal"
syn case match syn case match

View File

@ -405,7 +405,8 @@ EXTERN int no_check_timestamps INIT(= 0); /* Don't check timestamps */
typedef enum { typedef enum {
HLF_8 = 0 /* Meta & special keys listed with ":map", text that is HLF_8 = 0 /* Meta & special keys listed with ":map", text that is
displayed different from what it is */ displayed different from what it is */
, HLF_AT /* @ and ~ characters at end of screen, characters that , HLF_EOB // after the last line in the buffer
, HLF_AT /* @ characters at end of screen, characters that
don't really exist in the text */ don't really exist in the text */
, HLF_D /* directories in CTRL-D listing */ , HLF_D /* directories in CTRL-D listing */
, HLF_E /* error messages */ , HLF_E /* error messages */
@ -451,10 +452,10 @@ typedef enum {
/* The HL_FLAGS must be in the same order as the HLF_ enums! /* The HL_FLAGS must be in the same order as the HLF_ enums!
* When changing this also adjust the default for 'highlight'. */ * When changing this also adjust the default for 'highlight'. */
#define HL_FLAGS {'8', '@', 'd', 'e', 'i', 'l', 'm', 'M', 'n', 'N', 'r', 's', \ #define HL_FLAGS {'8', '~', '@', 'd', 'e', 'i', 'l', 'm', 'M', 'n', 'N', 'r', \
'S', 'c', 't', 'v', 'V', 'w', 'W', 'f', 'F', 'A', 'C', 'D', \ 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', 'f', 'F', 'A', 'C', \
'T', '-', '>', 'B', 'P', 'R', 'L', '+', '=', 'x', 'X', '*', \ 'D', 'T', '-', '>', 'B', 'P', 'R', 'L', '+', '=', 'x', 'X', \
'#', '_', '!', '.', 'o'} '*', '#', '_', '!', '.', 'o'}
EXTERN int highlight_attr[HLF_COUNT]; /* Highl. attr for each context. */ EXTERN int highlight_attr[HLF_COUNT]; /* Highl. attr for each context. */
# define USER_HIGHLIGHT # define USER_HIGHLIGHT

View File

@ -365,8 +365,8 @@ typedef struct vimoption {
# define ISP_LATIN1 (char_u *)"@,161-255" # define ISP_LATIN1 (char_u *)"@,161-255"
#define HIGHLIGHT_INIT \ #define HIGHLIGHT_INIT \
"8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search," \ "8:SpecialKey,~:EndOfBuffer,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch," \
"m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine," \ "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," \ "S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg," \
"W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete," \ "W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete," \
"T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare," \ "T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare," \

View File

@ -1651,7 +1651,7 @@ static void win_update(win_T *wp)
/* make sure the rest of the screen is blank */ /* make sure the rest of the screen is blank */
/* put '~'s on rows that aren't part of the file. */ /* put '~'s on rows that aren't part of the file. */
win_draw_end(wp, '~', ' ', row, wp->w_height, HLF_AT); win_draw_end(wp, '~', ' ', row, wp->w_height, HLF_EOB);
} }
/* Reset the type of redrawing required, the window has been updated. */ /* Reset the type of redrawing required, the window has been updated. */

View File

@ -5781,6 +5781,7 @@ static char *(highlight_init_both[]) =
"StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold"), "StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold"),
CENT("StatusLineNC term=reverse cterm=reverse", CENT("StatusLineNC term=reverse cterm=reverse",
"StatusLineNC term=reverse cterm=reverse gui=reverse"), "StatusLineNC term=reverse cterm=reverse gui=reverse"),
"default link EndOfBuffer NonText",
CENT("VertSplit term=reverse cterm=reverse", CENT("VertSplit term=reverse cterm=reverse",
"VertSplit term=reverse cterm=reverse gui=reverse"), "VertSplit term=reverse cterm=reverse gui=reverse"),
CENT("DiffText term=reverse cterm=bold ctermbg=Red", CENT("DiffText term=reverse cterm=bold ctermbg=Red",