aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/ui.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2023-02-23 18:29:36 +0100
committerJustin M. Keyes <justinkz@gmail.com>2023-02-27 19:50:59 +0100
commit7f424e2b65779c59fc0cac3cc7508ba2ec07f200 (patch)
tree60c2609c51ea9f5708c379972c38d7da32a6faa1 /src/nvim/api/ui.c
parentf64098a2df774c79dd454f63ac491570cdcaf2b2 (diff)
downloadrneovim-7f424e2b65779c59fc0cac3cc7508ba2ec07f200.tar.gz
rneovim-7f424e2b65779c59fc0cac3cc7508ba2ec07f200.tar.bz2
rneovim-7f424e2b65779c59fc0cac3cc7508ba2ec07f200.zip
feat(api): more fields in nvim_list_uis
Problem: nvim_list_uis does not report all ":help ui-option" fields. Solution: Store ":help ui-option" fields on the `UI` object and update ui_array.
Diffstat (limited to 'src/nvim/api/ui.c')
-rw-r--r--src/nvim/api/ui.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/nvim/api/ui.c b/src/nvim/api/ui.c
index f6dee066dc..00fd2781ff 100644
--- a/src/nvim/api/ui.c
+++ b/src/nvim/api/ui.c
@@ -113,6 +113,10 @@ void remote_ui_disconnect(uint64_t channel_id)
kv_destroy(data->call_buf);
pmap_del(uint64_t)(&connected_uis, channel_id);
ui_detach_impl(ui, channel_id);
+
+ // Destroy `ui`.
+ XFREE_CLEAR(ui->term_name);
+ XFREE_CLEAR(ui->term_background);
xfree(ui);
}
@@ -163,15 +167,9 @@ void nvim_ui_attach(uint64_t channel_id, Integer width, Integer height, Dictiona
UI *ui = xcalloc(1, sizeof(UI));
ui->width = (int)width;
ui->height = (int)height;
- ui->pum_nlines = 0;
- ui->pum_pos = false;
- ui->pum_width = 0.0;
- ui->pum_height = 0.0;
ui->pum_row = -1.0;
ui->pum_col = -1.0;
ui->rgb = true;
- ui->override = false;
-
CLEAR_FIELD(ui->ui_ext);
for (size_t i = 0; i < options.size; i++) {
@@ -320,6 +318,7 @@ static void ui_set_option(UI *ui, bool init, String name, Object value, Error *e
return;
});
set_tty_option("term", string_to_cstr(value.data.string));
+ ui->term_name = string_to_cstr(value.data.string);
return;
}
@@ -328,6 +327,7 @@ static void ui_set_option(UI *ui, bool init, String name, Object value, Error *e
return;
});
t_colors = (int)value.data.integer;
+ ui->term_colors = (int)value.data.integer;
return;
}
@@ -336,6 +336,7 @@ static void ui_set_option(UI *ui, bool init, String name, Object value, Error *e
return;
});
set_tty_background(value.data.string.data);
+ ui->term_background = string_to_cstr(value.data.string);
return;
}
@@ -351,6 +352,7 @@ static void ui_set_option(UI *ui, bool init, String name, Object value, Error *e
});
stdin_fd = (int)value.data.integer;
+ ui->stdin_fd = (int)value.data.integer;
return;
}
@@ -359,6 +361,7 @@ static void ui_set_option(UI *ui, bool init, String name, Object value, Error *e
return;
});
stdin_isatty = value.data.boolean;
+ ui->stdin_tty = value.data.boolean;
return;
}
@@ -367,6 +370,7 @@ static void ui_set_option(UI *ui, bool init, String name, Object value, Error *e
return;
});
stdout_isatty = value.data.boolean;
+ ui->stdout_tty = value.data.boolean;
return;
}