diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2015-01-13 21:19:59 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2015-01-14 08:31:20 -0300 |
commit | 8596776bf68f0e95ba3ff7b5176ef62b56f37f47 (patch) | |
tree | 6b9c7e876cb29801e06f8cd97fd5e7ab7663e9fb | |
parent | ea771ac559054c138cda58e68daeb286f5c80e80 (diff) | |
download | rneovim-8596776bf68f0e95ba3ff7b5176ef62b56f37f47.tar.gz rneovim-8596776bf68f0e95ba3ff7b5176ef62b56f37f47.tar.bz2 rneovim-8596776bf68f0e95ba3ff7b5176ef62b56f37f47.zip |
ui: Implement set_{title,icon}
-rw-r--r-- | src/nvim/msgpack_rpc/remote_ui.c | 16 | ||||
-rw-r--r-- | src/nvim/os_unix.c | 13 | ||||
-rw-r--r-- | src/nvim/ui.c | 12 | ||||
-rw-r--r-- | src/nvim/ui.h | 2 | ||||
-rw-r--r-- | test/functional/ui/screen.lua | 10 |
5 files changed, 49 insertions, 4 deletions
diff --git a/src/nvim/msgpack_rpc/remote_ui.c b/src/nvim/msgpack_rpc/remote_ui.c index 8350ae252b..361e93a6da 100644 --- a/src/nvim/msgpack_rpc/remote_ui.c +++ b/src/nvim/msgpack_rpc/remote_ui.c @@ -98,6 +98,8 @@ static Object remote_ui_attach(uint64_t channel_id, uint64_t request_id, ui->update_bg = remote_ui_update_bg; ui->flush = remote_ui_flush; ui->suspend = remote_ui_suspend; + ui->set_title = remote_ui_set_title; + ui->set_icon = remote_ui_set_icon; pmap_put(uint64_t)(connected_uis, channel_id, ui); ui_attach(ui); return NIL; @@ -325,3 +327,17 @@ static void remote_ui_suspend(UI *ui) Array args = ARRAY_DICT_INIT; push_call(ui, "suspend", args); } + +static void remote_ui_set_title(UI *ui, char *title) +{ + Array args = ARRAY_DICT_INIT; + ADD(args, STRING_OBJ(cstr_to_string(title))); + push_call(ui, "set_title", args); +} + +static void remote_ui_set_icon(UI *ui, char *icon) +{ + Array args = ARRAY_DICT_INIT; + ADD(args, STRING_OBJ(cstr_to_string(icon))); + push_call(ui, "set_icon", args); +} diff --git a/src/nvim/os_unix.c b/src/nvim/os_unix.c index 7ec4059bce..c4d0e9c592 100644 --- a/src/nvim/os_unix.c +++ b/src/nvim/os_unix.c @@ -43,6 +43,7 @@ #include "nvim/syntax.h" #include "nvim/tempfile.h" #include "nvim/term.h" +#include "nvim/ui.h" #include "nvim/types.h" #include "nvim/os/os.h" #include "nvim/os/time.h" @@ -181,22 +182,26 @@ void mch_settitle(char_u *title, char_u *icon) * Note: if "t_ts" is set, title is set with escape sequence rather * than x11 calls, because the x11 calls don't always work */ - if ((type || *T_TS != NUL) && title != NULL) { + if ((type || *T_TS != NUL || abstract_ui) && title != NULL) { if (oldtitle == NULL ) /* first call but not in GUI, save title */ (void)get_x11_title(FALSE); - if (*T_TS != NUL) /* it's OK if t_fs is empty */ + if (abstract_ui) { + ui_set_title((char *)title); + } else if (*T_TS != NUL) /* it's OK if t_fs is empty */ term_settitle(title); did_set_title = TRUE; } - if ((type || *T_CIS != NUL) && icon != NULL) { + if ((type || *T_CIS != NUL || abstract_ui) && icon != NULL) { if (oldicon == NULL ) /* first call, save icon */ get_x11_icon(FALSE); - if (*T_CIS != NUL) { + if (abstract_ui) { + ui_set_icon((char *)icon); + } else if (*T_CIS != NUL) { out_str(T_CIS); /* set icon start */ out_str_nf(icon); out_str(T_CIE); /* set icon end */ diff --git a/src/nvim/ui.c b/src/nvim/ui.c index d13c7e5feb..a8ca58d633 100644 --- a/src/nvim/ui.c +++ b/src/nvim/ui.c @@ -139,6 +139,18 @@ void ui_suspend(void) } } +void ui_set_title(char *title) +{ + UI_CALL(set_title, title); + UI_CALL(flush); +} + +void ui_set_icon(char *icon) +{ + UI_CALL(set_icon, icon); + UI_CALL(flush); +} + /* * Try to get the current Vim shell size. Put the result in Rows and Columns. * Use the new sizes as defaults for 'columns' and 'lines'. diff --git a/src/nvim/ui.h b/src/nvim/ui.h index 9ec10db75e..099f2643d5 100644 --- a/src/nvim/ui.h +++ b/src/nvim/ui.h @@ -36,6 +36,8 @@ struct ui_t { void (*update_fg)(UI *ui, int fg); void (*update_bg)(UI *ui, int bg); void (*suspend)(UI *ui); + void (*set_title)(UI *ui, char *title); + void (*set_icon)(UI *ui, char *icon); }; #ifdef INCLUDE_GENERATED_DECLARATIONS diff --git a/test/functional/ui/screen.lua b/test/functional/ui/screen.lua index 4163d8011a..3a39cd0aa6 100644 --- a/test/functional/ui/screen.lua +++ b/test/functional/ui/screen.lua @@ -115,6 +115,8 @@ function Screen.new(width, height) _bell = false, _visual_bell = false, _suspended = true, + _title = nil, + _icon = nil, _attrs = {}, _cursor = { enabled = true, row = 1, col = 1 @@ -306,6 +308,14 @@ function Screen:_handle_suspend() self._suspended = true end +function Screen:_handle_set_title(title) + self._title = title +end + +function Screen:_handle_set_icon(icon) + self._icon = icon +end + function Screen:_clear_block(top, lines, left, columns) for i = top, top + lines - 1 do self:_clear_row_section(i, left, left + columns - 1) |