diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2014-04-07 21:25:44 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2014-04-07 23:47:51 +0100 |
| commit | 203a7732f5fafb5f9b7e8564bd3bd4587e168134 (patch) | |
| tree | e136448924786ac638b8ad91304b6cdf6e5eb035 /src/main.cc | |
| parent | 33de42610dc08dd7bfd65f49a70ec68a478dee2d (diff) | |
Add support for querying client environement variables
At connection, a remote client sends all its environement to the
server, which then provides access to client env through
kak_client_env_VAR_NAME variables in the shell.
Diffstat (limited to 'src/main.cc')
| -rw-r--r-- | src/main.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/main.cc b/src/main.cc index a026f664..43b9675a 100644 --- a/src/main.cc +++ b/src/main.cc @@ -102,6 +102,10 @@ void register_env_vars() [](const String& name, const Context& context) -> String { return RegisterManager::instance()[name[4]].values(context)[0]; } }, { + "client_env_.+", + [](const String& name, const Context& context) -> String + { return context.client().get_env_var(name.substr(11_byte)); } + }, { "session", [](const String& name, const Context& context) -> String { return Server::instance().session(); } @@ -189,7 +193,7 @@ void create_local_client(const String& init_command) UserInterface* ui = new LocalNCursesUI{}; static Client* client = ClientManager::instance().create_client( - std::unique_ptr<UserInterface>{ui}, init_command); + std::unique_ptr<UserInterface>{ui}, get_env_vars(), init_command); signal(SIGHUP, [](int) { if (client) ClientManager::instance().remove_client(*client); @@ -221,6 +225,7 @@ int run_client(const String& session, const String& init_command) EventManager event_manager; auto client = connect_to(session, std::unique_ptr<UserInterface>{new NCursesUI{}}, + get_env_vars(), init_command); while (true) event_manager.handle_next_events(); |
