mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	feat(highlight): add FloatFooter highlight group
				
					
				
			Problem: No clear separation of floating title and footer highlighting. Solution: Add new `FloatFooter` highlight group.
This commit is contained in:
		@@ -479,6 +479,7 @@ to disable various visual features such as the 'number' column.
 | 
			
		||||
Other highlight groups specific to floating windows:
 | 
			
		||||
- |hl-FloatBorder| for window's border
 | 
			
		||||
- |hl-FloatTitle| for window's title
 | 
			
		||||
- |hl-FloatFooter| for window's footer
 | 
			
		||||
 | 
			
		||||
Currently, floating windows don't support some widgets like scrollbar.
 | 
			
		||||
 | 
			
		||||
@@ -3146,7 +3147,7 @@ nvim_open_win({buffer}, {enter}, {*config})                  *nvim_open_win()*
 | 
			
		||||
                    Default is `"left"`.
 | 
			
		||||
                  • footer: Footer (optional) in window border, string or
 | 
			
		||||
                    list. List should consist of `[text, highlight]` tuples.
 | 
			
		||||
                    If string, the default highlight group is `FloatTitle`.
 | 
			
		||||
                    If string, the default highlight group is `FloatFooter`.
 | 
			
		||||
                  • footer_pos: Footer position. Must be set with `footer`
 | 
			
		||||
                    option. Value can be one of "left", "center", or "right".
 | 
			
		||||
                    Default is `"left"`.
 | 
			
		||||
 
 | 
			
		||||
@@ -156,7 +156,7 @@ The following new APIs and features were added.
 | 
			
		||||
  support fully MessagePack-RPC compliant clients.
 | 
			
		||||
 | 
			
		||||
• Floating windows can now show footer with new `footer` and `footer_pos`
 | 
			
		||||
  config fields.
 | 
			
		||||
  config fields. Uses |hl-FloatFooter| by default.
 | 
			
		||||
 | 
			
		||||
==============================================================================
 | 
			
		||||
CHANGED FEATURES                                                 *news-changed*
 | 
			
		||||
 
 | 
			
		||||
@@ -5273,6 +5273,8 @@ NormalFloat	Normal text in floating windows.
 | 
			
		||||
FloatBorder	Border of floating windows.
 | 
			
		||||
							*hl-FloatTitle*
 | 
			
		||||
FloatTitle	Title of floating windows.
 | 
			
		||||
							*hl-FloatFooter*
 | 
			
		||||
FloatFooter	Footer of floating windows.
 | 
			
		||||
							*hl-NormalNC*
 | 
			
		||||
NormalNC	Normal text in non-current windows.
 | 
			
		||||
							*hl-Pmenu*
 | 
			
		||||
 
 | 
			
		||||
@@ -258,6 +258,7 @@ Highlight groups:
 | 
			
		||||
  |hl-NormalFloat| highlights floating window
 | 
			
		||||
  |hl-FloatBorder| highlights border of a floating window
 | 
			
		||||
  |hl-FloatTitle| highlights title of a floating window
 | 
			
		||||
  |hl-FloatFooter| highlights footer of a floating window
 | 
			
		||||
  |hl-NormalNC| highlights non-current windows
 | 
			
		||||
  |hl-MsgArea| highlights messages/cmdline area
 | 
			
		||||
  |hl-MsgSeparator| highlights separator for scrolled messages
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								runtime/lua/vim/_meta/api.lua
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								runtime/lua/vim/_meta/api.lua
									
									
									
										generated
									
									
									
								
							@@ -1559,7 +1559,7 @@ function vim.api.nvim_open_term(buffer, opts) end
 | 
			
		||||
---                 Default is `"left"`.
 | 
			
		||||
---               • footer: Footer (optional) in window border, string or
 | 
			
		||||
---                 list. List should consist of `[text, highlight]` tuples.
 | 
			
		||||
---                 If string, the default highlight group is `FloatTitle`.
 | 
			
		||||
---                 If string, the default highlight group is `FloatFooter`.
 | 
			
		||||
---               • footer_pos: Footer position. Must be set with `footer`
 | 
			
		||||
---                 option. Value can be one of "left", "center", or "right".
 | 
			
		||||
---                 Default is `"left"`.
 | 
			
		||||
 
 | 
			
		||||
@@ -153,7 +153,7 @@
 | 
			
		||||
///     Default is `"left"`.
 | 
			
		||||
///   - footer: Footer (optional) in window border, string or list.
 | 
			
		||||
///     List should consist of `[text, highlight]` tuples.
 | 
			
		||||
///     If string, the default highlight group is `FloatTitle`.
 | 
			
		||||
///     If string, the default highlight group is `FloatFooter`.
 | 
			
		||||
///   - footer_pos: Footer position. Must be set with `footer` option.
 | 
			
		||||
///     Value can be one of "left", "center", or "right".
 | 
			
		||||
///     Default is `"left"`.
 | 
			
		||||
@@ -428,16 +428,19 @@ static void parse_bordertext(Object bordertext, BorderTextType bordertext_type,
 | 
			
		||||
  bool *is_present;
 | 
			
		||||
  VirtText *chunks;
 | 
			
		||||
  int *width;
 | 
			
		||||
  int default_hl_id;
 | 
			
		||||
  switch (bordertext_type) {
 | 
			
		||||
  case kBorderTextTitle:
 | 
			
		||||
    is_present = &fconfig->title;
 | 
			
		||||
    chunks = &fconfig->title_chunks;
 | 
			
		||||
    width = &fconfig->title_width;
 | 
			
		||||
    default_hl_id = syn_check_group(S_LEN("FloatTitle"));
 | 
			
		||||
    break;
 | 
			
		||||
  case kBorderTextFooter:
 | 
			
		||||
    is_present = &fconfig->footer;
 | 
			
		||||
    chunks = &fconfig->footer_chunks;
 | 
			
		||||
    width = &fconfig->footer_width;
 | 
			
		||||
    default_hl_id = syn_check_group(S_LEN("FloatFooter"));
 | 
			
		||||
    break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -446,9 +449,8 @@ static void parse_bordertext(Object bordertext, BorderTextType bordertext_type,
 | 
			
		||||
      *is_present = false;
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    int hl_id = syn_check_group(S_LEN("FloatTitle"));
 | 
			
		||||
    kv_push(*chunks, ((VirtTextChunk){ .text = xstrdup(bordertext.data.string.data),
 | 
			
		||||
                                       .hl_id = hl_id }));
 | 
			
		||||
                                       .hl_id = default_hl_id }));
 | 
			
		||||
    *width = (int)mb_string2cells(bordertext.data.string.data);
 | 
			
		||||
    *is_present = true;
 | 
			
		||||
    return;
 | 
			
		||||
 
 | 
			
		||||
@@ -173,6 +173,7 @@ static const char *highlight_init_both[] = {
 | 
			
		||||
  "default link NormalFloat Pmenu",
 | 
			
		||||
  "default link FloatBorder WinSeparator",
 | 
			
		||||
  "default link FloatTitle Title",
 | 
			
		||||
  "default link FloatFooter Title",
 | 
			
		||||
  "default FloatShadow blend=80 guibg=Black",
 | 
			
		||||
  "default FloatShadowThrough blend=100 guibg=Black",
 | 
			
		||||
  "RedrawDebugNormal cterm=reverse gui=reverse",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user