mirror of
https://github.com/neovim/neovim.git
synced 2025-09-29 06:28:35 +00:00
Merge pull request #28617 from glepnir/border_hl
fix(float): missing default highlight for title
This commit is contained in:
@@ -189,13 +189,13 @@
|
||||
/// ```
|
||||
/// - title: Title (optional) in window border, string or list.
|
||||
/// List should consist of `[text, highlight]` tuples.
|
||||
/// If string, the default highlight group is `FloatTitle`.
|
||||
/// If string, or a tuple lacks a highlight, the default highlight group is `FloatTitle`.
|
||||
/// - title_pos: Title position. Must be set with `title` option.
|
||||
/// Value can be one of "left", "center", or "right".
|
||||
/// 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 `FloatFooter`.
|
||||
/// If string, or a tuple lacks a highlight, 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"`.
|
||||
@@ -851,7 +851,6 @@ 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:
|
||||
if (fconfig->title) {
|
||||
@@ -861,7 +860,6 @@ static void parse_bordertext(Object bordertext, BorderTextType bordertext_type,
|
||||
is_present = &fconfig->title;
|
||||
chunks = &fconfig->title_chunks;
|
||||
width = &fconfig->title_width;
|
||||
default_hl_id = syn_check_group(S_LEN("FloatTitle"));
|
||||
break;
|
||||
case kBorderTextFooter:
|
||||
if (fconfig->footer) {
|
||||
@@ -871,7 +869,6 @@ static void parse_bordertext(Object bordertext, BorderTextType bordertext_type,
|
||||
is_present = &fconfig->footer;
|
||||
chunks = &fconfig->footer_chunks;
|
||||
width = &fconfig->footer_width;
|
||||
default_hl_id = syn_check_group(S_LEN("FloatFooter"));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -881,7 +878,7 @@ static void parse_bordertext(Object bordertext, BorderTextType bordertext_type,
|
||||
return;
|
||||
}
|
||||
kv_push(*chunks, ((VirtTextChunk){ .text = xstrdup(bordertext.data.string.data),
|
||||
.hl_id = default_hl_id }));
|
||||
.hl_id = -1 }));
|
||||
*width = (int)mb_string2cells(bordertext.data.string.data);
|
||||
*is_present = true;
|
||||
return;
|
||||
|
@@ -65,6 +65,7 @@
|
||||
#include "nvim/autocmd.h"
|
||||
#include "nvim/autocmd_defs.h"
|
||||
#include "nvim/buffer.h"
|
||||
#include "nvim/buffer_defs.h"
|
||||
#include "nvim/charset.h"
|
||||
#include "nvim/cmdexpand.h"
|
||||
#include "nvim/cursor.h"
|
||||
@@ -715,14 +716,17 @@ void end_search_hl(void)
|
||||
screen_search_hl.rm.regprog = NULL;
|
||||
}
|
||||
|
||||
static void win_redr_bordertext(win_T *wp, VirtText vt, int col)
|
||||
static void win_redr_bordertext(win_T *wp, VirtText vt, int col, BorderTextType bt)
|
||||
{
|
||||
for (size_t i = 0; i < kv_size(vt);) {
|
||||
int attr = 0;
|
||||
int attr = -1;
|
||||
char *text = next_virt_text_chunk(vt, &i, &attr);
|
||||
if (text == NULL) {
|
||||
break;
|
||||
}
|
||||
if (attr == -1) { // No highlight specified.
|
||||
attr = wp->w_ns_hl_attr[bt == kBorderTextTitle ? HLF_BTITLE : HLF_BFOOTER];
|
||||
}
|
||||
attr = hl_apply_winblend(wp, attr);
|
||||
col += grid_line_puts(col, text, -1, attr);
|
||||
}
|
||||
@@ -773,7 +777,7 @@ static void win_redr_border(win_T *wp)
|
||||
if (wp->w_config.title) {
|
||||
int title_col = win_get_bordertext_col(icol, wp->w_config.title_width,
|
||||
wp->w_config.title_pos);
|
||||
win_redr_bordertext(wp, wp->w_config.title_chunks, title_col);
|
||||
win_redr_bordertext(wp, wp->w_config.title_chunks, title_col, kBorderTextTitle);
|
||||
}
|
||||
if (adj[1]) {
|
||||
grid_line_put_schar(icol + adj[3], chars[2], attrs[2]);
|
||||
@@ -809,7 +813,7 @@ static void win_redr_border(win_T *wp)
|
||||
if (wp->w_config.footer) {
|
||||
int footer_col = win_get_bordertext_col(icol, wp->w_config.footer_width,
|
||||
wp->w_config.footer_pos);
|
||||
win_redr_bordertext(wp, wp->w_config.footer_chunks, footer_col);
|
||||
win_redr_bordertext(wp, wp->w_config.footer_chunks, footer_col, kBorderTextFooter);
|
||||
}
|
||||
if (adj[1]) {
|
||||
grid_line_put_schar(icol + adj[3], chars[4], attrs[4]);
|
||||
|
Reference in New Issue
Block a user