summaryrefslogtreecommitdiff
path: root/src/shell_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-05-29 05:19:27 +0000
committerMaxime Coste <frrrwww@gmail.com>2012-05-29 05:19:27 +0000
commit8fedbbf07bdb972a82af2923cbe914439389c808 (patch)
treec11267716602ee6982d948ef7241434b9f25a069 /src/shell_manager.cc
parente57ddd3bab1445caaf001d80f117c878762adc69 (diff)
ShellManager::eval now takes an additional env_var map
Diffstat (limited to 'src/shell_manager.cc')
-rw-r--r--src/shell_manager.cc17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/shell_manager.cc b/src/shell_manager.cc
index f750ab05..48688494 100644
--- a/src/shell_manager.cc
+++ b/src/shell_manager.cc
@@ -12,7 +12,8 @@ ShellManager::ShellManager()
{
}
-String ShellManager::eval(const String& cmdline, const Context& context)
+String ShellManager::eval(const String& cmdline, const Context& context,
+ const EnvVarMap& env_vars)
{
int write_pipe[2];
int read_pipe[2];
@@ -61,11 +62,17 @@ String ShellManager::eval(const String& cmdline, const Context& context)
assert(false);
assert(name.length() > 0);
- auto env_var = m_env_vars.find(name);
- if (env_var != m_env_vars.end())
+ auto local_var = env_vars.find(name);
+ if (local_var != env_vars.end())
+ setenv(("kak_" + name).c_str(), local_var->second.c_str(), 1);
+ else
{
- String value = env_var->second(context);
- setenv(("kak_" + name).c_str(), value.c_str(), 1);
+ auto env_var = m_env_vars.find(name);
+ if (env_var != m_env_vars.end())
+ {
+ String value = env_var->second(context);
+ setenv(("kak_" + name).c_str(), value.c_str(), 1);
+ }
}
++it;