aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Hinz <mh.codebro@gmail.com>2015-02-01 20:28:23 -0300
committerJustin M. Keyes <justinkz@gmail.com>2015-02-02 01:16:41 -0500
commit4d70aae770e33c45a194634d11b9c49e866dd84b (patch)
treebb0373a3f6eecd9b7a6dc2c10d29b2250d385319
parent84ca5f973de7e9ce0fe60d7e3b39d6724dc8af8c (diff)
downloadrneovim-4d70aae770e33c45a194634d11b9c49e866dd84b.tar.gz
rneovim-4d70aae770e33c45a194634d11b9c49e866dd84b.tar.bz2
rneovim-4d70aae770e33c45a194634d11b9c49e866dd84b.zip
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
-rw-r--r--runtime/doc/options.txt24
-rw-r--r--runtime/doc/syntax.txt11
-rw-r--r--runtime/syntax/vim.vim2
-rw-r--r--src/nvim/globals.h11
-rw-r--r--src/nvim/option.c4
-rw-r--r--src/nvim/screen.c2
-rw-r--r--src/nvim/syntax.c1
7 files changed, 30 insertions, 25 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 6c14d8e8fd..f781492df8 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -3784,17 +3784,16 @@ A jump table for the options with a short description can be found at |Q_op|.
*'highlight'* *'hl'*
'highlight' 'hl' string (default (as a single string):
- "8:SpecialKey,@: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,
- w:WarningMsg,W:WildMenu,
- f:Folded,F:FoldColumn,A:DiffAdd,
- C:DiffChange,D:DiffDelete,T:DiffText,
- >:SignColumn,B:SpellBad,P:SpellCap,
- R:SpellRare,L:SpellLocal,-:Conceal,
- +:Pmenu,=:PmenuSel,
+ "8:SpecialKey,~:EndOfBuffer,@:NonText,i
+ 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,w:WarningMsg,W:WildMenu,f:Folded,
+ F:FoldColumn,A:DiffAdd,C:DiffChange,
+ D:DiffDelete,T:DiffText,>:SignColumn,
+ B:SpellBad,P:SpellCap,R:SpellRare,
+ L:SpellLocal,-:Conceal,+:Pmenu,=:PmenuSel,
x:PmenuSbar,X:PmenuThumb")
global
{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
use for that occasion. The occasions are:
|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'
|hl-Directory| d directories in CTRL-D listing and other special
things in listings
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 1841f83214..c1f7e06f0e 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -4761,6 +4761,9 @@ DiffChange diff mode: Changed line |diff.txt|
DiffDelete diff mode: Deleted line |diff.txt|
*hl-DiffText*
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*
ErrorMsg error messages on the command line
*hl-VertSplit*
@@ -4789,10 +4792,10 @@ ModeMsg 'showmode' message (e.g., "-- INSERT --")
*hl-MoreMsg*
MoreMsg |more-prompt|
*hl-NonText*
-NonText '~' and '@' at the end of the window, characters from
- 'showbreak' and other characters that do not really exist in
- the text (e.g., ">" displayed when a double-wide character
- doesn't fit at the end of the line).
+NonText '@' at the end of the window, characters from 'showbreak'
+ and other characters that do not really exist in the text
+ (e.g., ">" displayed when a double-wide character doesn't
+ fit at the end of the line). See also |hl-EndOfBuffer|.
*hl-Normal*
Normal normal text
*hl-Pmenu*
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 47d74090d1..791d5b0f89 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -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
" 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 case match
diff --git a/src/nvim/globals.h b/src/nvim/globals.h
index 73bcdea226..1aa90777fa 100644
--- a/src/nvim/globals.h
+++ b/src/nvim/globals.h
@@ -405,7 +405,8 @@ EXTERN int no_check_timestamps INIT(= 0); /* Don't check timestamps */
typedef enum {
HLF_8 = 0 /* Meta & special keys listed with ":map", text that 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 */
, HLF_D /* directories in CTRL-D listing */
, HLF_E /* error messages */
@@ -451,10 +452,10 @@ 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', 'i', 'l', 'm', 'M', 'n', 'N', 'r', 's', \
- 'S', 'c', 't', 'v', 'V', 'w', 'W', 'f', 'F', 'A', 'C', 'D', \
- 'T', '-', '>', 'B', 'P', 'R', 'L', '+', '=', 'x', 'X', '*', \
- '#', '_', '!', '.', 'o'}
+#define HL_FLAGS {'8', '~', '@', 'd', 'e', 'i', 'l', 'm', 'M', 'n', 'N', 'r', \
+ 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', 'f', 'F', 'A', 'C', \
+ 'D', 'T', '-', '>', 'B', 'P', 'R', 'L', '+', '=', 'x', 'X', \
+ '*', '#', '_', '!', '.', 'o'}
EXTERN int highlight_attr[HLF_COUNT]; /* Highl. attr for each context. */
# define USER_HIGHLIGHT
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 0199c5fc6c..2d16c0fa71 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -365,8 +365,8 @@ typedef struct vimoption {
# define ISP_LATIN1 (char_u *)"@,161-255"
#define HIGHLIGHT_INIT \
- "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search," \
- "m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine," \
+ "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," \
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 6d25c4359b..9deaa7979f 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -1651,7 +1651,7 @@ static void win_update(win_T *wp)
/* make sure the rest of the screen is blank */
/* 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. */
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c
index f24b2aa80a..3c4b45c436 100644
--- a/src/nvim/syntax.c
+++ b/src/nvim/syntax.c
@@ -5781,6 +5781,7 @@ static char *(highlight_init_both[]) =
"StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold"),
CENT("StatusLineNC term=reverse cterm=reverse",
"StatusLineNC term=reverse cterm=reverse gui=reverse"),
+ "default link EndOfBuffer NonText",
CENT("VertSplit term=reverse cterm=reverse",
"VertSplit term=reverse cterm=reverse gui=reverse"),
CENT("DiffText term=reverse cterm=bold ctermbg=Red",