summaryrefslogtreecommitdiff
path: root/src/client_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2016-12-01 20:40:50 +0000
committerMaxime Coste <mawww@kakoune.org>2016-12-01 20:55:20 +0000
commita65e8142f37fc8c22fc697440ea5632d604ff91f (patch)
treedf05fb909b0cd7fed04ccd73b5445e6f40d7dcfb /src/client_manager.cc
parent3ad554167dbc6cc5021ad48d132513a006fd927f (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.cc11
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)
{