diff options
Diffstat (limited to 'src/nvim/main.c')
-rw-r--r-- | src/nvim/main.c | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c index e1bb2d0b66..e11db16c61 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -61,9 +61,13 @@ #include "nvim/os/input.h" #include "nvim/os/os.h" #include "nvim/os/time.h" -#include "nvim/os/event.h" +#include "nvim/event/loop.h" #include "nvim/os/signal.h" +#include "nvim/event/process.h" +#include "nvim/msgpack_rpc/defs.h" #include "nvim/msgpack_rpc/helpers.h" +#include "nvim/msgpack_rpc/server.h" +#include "nvim/msgpack_rpc/channel.h" #include "nvim/api/private/defs.h" #include "nvim/api/private/helpers.h" #include "nvim/api/private/handle.h" @@ -133,11 +137,47 @@ static const char *err_extra_cmd = N_("Too many \"+command\", \"-c command\" or \"--cmd command\" arguments"); +void event_init(void) +{ + loop_init(&loop, NULL); + // early msgpack-rpc initialization + msgpack_rpc_init_method_table(); + msgpack_rpc_helpers_init(); + // Initialize input events + input_init(); + // Timer to wake the event loop if a timeout argument is passed to + // `event_poll` + // Signals + signal_init(); + // finish mspgack-rpc initialization + channel_init(); + server_init(); + terminal_init(); +} + +void event_teardown(void) +{ + if (!loop.events) { + return; + } + + queue_process_events(loop.events); + input_stop(); + channel_teardown(); + process_teardown(&loop); + server_teardown(); + signal_teardown(); + terminal_teardown(); + + loop_close(&loop); +} + /// Performs early initialization. /// /// Needed for unit tests. Must be called after `time_init()`. void early_init(void) { + fs_init(); handle_init(); (void)mb_init(); // init mb_bytelen_tab[] to ones @@ -481,6 +521,11 @@ int main(int argc, char **argv) if (restart_edit != 0) stuffcharReadbuff(K_NOP); + // WORKAROUND(mhi): #3023 + if (cb_flags & CB_UNNAMEDMASK) { + (void)eval_has_provider("clipboard"); + } + TIME_MSG("before starting main loop"); /* |