aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ui.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/ui.c')
-rw-r--r--src/nvim/ui.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/nvim/ui.c b/src/nvim/ui.c
index 69916fa4cd..6dcc3de1b0 100644
--- a/src/nvim/ui.c
+++ b/src/nvim/ui.c
@@ -58,6 +58,10 @@ static int busy = 0;
static int height, width;
static int old_mode_idx = -1;
+static bool tabline_external = false;
+static bool cmdline_external = false;
+static bool wildmenu_external = false;
+
// UI_CALL invokes a function on all registered UI instances. The functions can
// have 0-5 arguments (configurable by SELECT_NTH).
//
@@ -167,17 +171,20 @@ void ui_refresh(void)
int width = INT_MAX, height = INT_MAX;
bool pum_external = true;
+ bool tabline_external = true;
for (size_t i = 0; i < ui_count; i++) {
UI *ui = uis[i];
width = MIN(ui->width, width);
height = MIN(ui->height, height);
pum_external &= ui->pum_external;
+ tabline_external &= ui->tabline_external;
}
row = col = 0;
screen_resize(width, height);
pum_set_external(pum_external);
+ ui_set_widget_external(kUITabline, tabline_external);
ui_mode_info_set();
old_mode_idx = -1;
ui_cursor_shape();
@@ -557,3 +564,30 @@ void ui_cursor_shape(void)
conceal_check_cursur_line();
}
+bool ui_is_widget_external(UIWidget widget)
+{
+ switch (widget) {
+ case kUITabline:
+ return tabline_external;
+ case kUICmdline:
+ return cmdline_external;
+ case kUIWildmenu:
+ return wildmenu_external;
+ }
+ return false;
+}
+
+void ui_set_widget_external(UIWidget widget, bool external)
+{
+ switch (widget) {
+ case kUITabline:
+ tabline_external = external;
+ break;
+ case kUICmdline:
+ cmdline_external = external;
+ break;
+ case kUIWildmenu:
+ wildmenu_external = external;
+ break;
+ }
+}