aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/msgpack_rpc/channel.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2019-09-07 13:00:51 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2019-09-08 15:24:14 +0200
commit19993bca4afaade5d0fbaf132ff66064370bacb0 (patch)
tree6d81b8d88d70e83cd02b1ab2079d6415f973ae2a /src/nvim/msgpack_rpc/channel.c
parentbf9ff5148a57c64c26dd3786a4028418a6047e4a (diff)
downloadrneovim-19993bca4afaade5d0fbaf132ff66064370bacb0.tar.gz
rneovim-19993bca4afaade5d0fbaf132ff66064370bacb0.tar.bz2
rneovim-19993bca4afaade5d0fbaf132ff66064370bacb0.zip
rpc: allow handling of nvim_ui_try_resize at the pager
This makes external UI behave consistenly with TUI w.r.t resizes. Which will be needed anyway as TUI will use the external UI protocol soon.
Diffstat (limited to 'src/nvim/msgpack_rpc/channel.c')
-rw-r--r--src/nvim/msgpack_rpc/channel.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c
index 81c9f1e3f4..19f626c63b 100644
--- a/src/nvim/msgpack_rpc/channel.c
+++ b/src/nvim/msgpack_rpc/channel.c
@@ -31,6 +31,7 @@
#include "nvim/misc1.h"
#include "nvim/lib/kvec.h"
#include "nvim/os/input.h"
+#include "nvim/ui.h"
#if MIN_LOG_LEVEL > DEBUG_LOG_LEVEL
#define log_client_msg(...)
@@ -355,11 +356,19 @@ static void handle_request(Channel *channel, msgpack_object *request)
request_event((void **)&evdata);
}
} else {
- multiqueue_put(channel->events, request_event, 1, evdata);
- DLOG("RPC: scheduled %.*s", method->via.bin.size, method->via.bin.ptr);
+ bool is_resize = handler.fn == handle_nvim_ui_try_resize;
+ if (is_resize) {
+ Event ev = event_split(event_create(request_event, 1, evdata), 2);
+ multiqueue_put_event(channel->events, ev);
+ multiqueue_put_event(resize_events, ev);
+ } else {
+ multiqueue_put(channel->events, request_event, 1, evdata);
+ DLOG("RPC: scheduled %.*s", method->via.bin.size, method->via.bin.ptr);
+ }
}
}
+
/// Handles a message, depending on the type:
/// - Request: invokes method and writes the response (or error).
/// - Notification: invokes method (emits `nvim_error_event` on error).