From 203a7732f5fafb5f9b7e8564bd3bd4587e168134 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Mon, 7 Apr 2014 21:25:44 +0100 Subject: 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. --- src/main.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/main.cc') diff --git a/src/main.cc b/src/main.cc index a026f664..43b9675a 100644 --- a/src/main.cc +++ b/src/main.cc @@ -101,6 +101,10 @@ void register_env_vars() "reg_.+", [](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 @@ -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{ui}, init_command); + std::unique_ptr{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{new NCursesUI{}}, + get_env_vars(), init_command); while (true) event_manager.handle_next_events(); -- cgit v1.2.3