diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-12-19 18:56:47 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-12-19 18:56:47 +0100 |
| commit | 2ab9b474beadcb6b7a53bd15856ff91ec26fa575 (patch) | |
| tree | 8d51ac70ca83866c009d80d02c2c270b8fd644b3 /src/client_manager.cc | |
| parent | 6c901e9152dbfd226d57479e0ccacb62f37a762a (diff) | |
Client: catch errors when executing init commands
Diffstat (limited to 'src/client_manager.cc')
| -rw-r--r-- | src/client_manager.cc | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/client_manager.cc b/src/client_manager.cc index 6cb5cd75..cf9a02a6 100644 --- a/src/client_manager.cc +++ b/src/client_manager.cc @@ -15,7 +15,22 @@ void ClientManager::create_client(std::unique_ptr<UserInterface>&& ui, InputHandler* input_handler = &m_clients.back()->input_handler; Context* context = &m_clients.back()->context; - CommandManager::instance().execute(init_commands, *context); + + try + { + CommandManager::instance().execute(init_commands, *context); + } + catch (Kakoune::runtime_error& error) + { + context->print_status(error.description()); + } + catch (Kakoune::client_removed&) + { + m_clients.pop_back(); + close(event_fd); + return; + } + EventManager::instance().watch(event_fd, [input_handler, context, this](int fd) { try { |
