diff options
author | Dongdong Zhou <dzhou121@gmail.com> | 2017-02-24 09:35:27 +0000 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2017-04-26 02:15:31 +0200 |
commit | 88023d51238698dd625c26300142d3dbe5770b73 (patch) | |
tree | 3a3876cc8525a8ca7147bf273698886759d292be /src/nvim/screen.c | |
parent | 7e571bca5d5e00e9e33e266b983a48bb4014183f (diff) | |
download | rneovim-88023d51238698dd625c26300142d3dbe5770b73.tar.gz rneovim-88023d51238698dd625c26300142d3dbe5770b73.tar.bz2 rneovim-88023d51238698dd625c26300142d3dbe5770b73.zip |
api/ui: externalize tabline
Diffstat (limited to 'src/nvim/screen.c')
-rw-r--r-- | src/nvim/screen.c | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 10dc86d5fa..ed85b6e8b8 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -132,6 +132,7 @@ #include "nvim/version.h" #include "nvim/window.h" #include "nvim/os/time.h" +#include "nvim/api/private/helpers.h" #define MB_FILLER_CHAR '<' /* character used when a double-width character * doesn't fit. */ @@ -6885,8 +6886,13 @@ static void draw_tabline(void) if (ScreenLines == NULL) { return; } - redraw_tabline = false; + if (ui_is_widget_external(kUITabline)) { + draw_tabline_ext(); + return; + } + + redraw_tabline = false; if (tabline_height() < 1) return; @@ -7027,6 +7033,34 @@ static void draw_tabline(void) redraw_tabline = FALSE; } +// send tabline update to external ui +void draw_tabline_ext(void) +{ + win_T *cwp; + + Array args = ARRAY_DICT_INIT; + ADD(args, INTEGER_OBJ(curtab->handle)); + Array tabs = ARRAY_DICT_INIT; + FOR_ALL_TABS(tp) { + if (tp == curtab) { + cwp = curwin; + } else { + cwp = tp->tp_curwin; + } + get_trans_bufname(cwp->w_buffer); + Array tab = ARRAY_DICT_INIT; + ADD(tab, INTEGER_OBJ(tp->handle)); + + Dictionary tab_info = ARRAY_DICT_INIT; + PUT(tab_info, "name", STRING_OBJ(cstr_to_string((char *)NameBuff))); + ADD(tab, DICTIONARY_OBJ(tab_info)); + ADD(tabs, ARRAY_OBJ(tab)); + } + ADD(args, ARRAY_OBJ(tabs)); + + ui_event("tabline_update", args); +} + /* * Get buffer name for "buf" into NameBuff[]. * Takes care of special buffer names and translates special characters. |