diff options
| author | Maxime Coste <mawww@kakoune.org> | 2016-12-01 20:40:50 +0000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2016-12-01 20:55:20 +0000 |
| commit | a65e8142f37fc8c22fc697440ea5632d604ff91f (patch) | |
| tree | df05fb909b0cd7fed04ccd73b5445e6f40d7dcfb /src/client_manager.cc | |
| parent | 3ad554167dbc6cc5021ad48d132513a006fd927f (diff) | |
Rework handling of initial coordinates so that init commands can change them
Fixes #944
Diffstat (limited to 'src/client_manager.cc')
| -rw-r--r-- | src/client_manager.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/client_manager.cc b/src/client_manager.cc index 8edaeb2f..97ace9e1 100644 --- a/src/client_manager.cc +++ b/src/client_manager.cc @@ -37,8 +37,8 @@ String ClientManager::generate_name() const } Client* ClientManager::create_client(std::unique_ptr<UserInterface>&& ui, - EnvVarMap env_vars, - StringView init_commands) + EnvVarMap env_vars, StringView init_cmds, + BufferCoord init_coord) { Buffer& buffer = BufferManager::instance().get_first_buffer(); WindowAndSelections ws = get_free_window(buffer); @@ -46,9 +46,14 @@ Client* ClientManager::create_client(std::unique_ptr<UserInterface>&& ui, std::move(ws.selections), std::move(env_vars), generate_name()}; m_clients.emplace_back(client); + + auto& selections = client->context().selections_write_only(); + selections = SelectionList(buffer, buffer.clamp(init_coord)); + client->context().window().center_line(init_coord.line); + try { - CommandManager::instance().execute(init_commands, client->context()); + CommandManager::instance().execute(init_cmds, client->context()); } catch (Kakoune::runtime_error& error) { |
