diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2014-06-18 20:20:58 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2014-06-18 20:20:58 +0100 |
| commit | 1c697647749ee559df7cd39e512bf10680678fe7 (patch) | |
| tree | 7f5d0682e3caa5ecace7bdaf2378ee634abb5441 /src/shell_manager.cc | |
| parent | cbcc05396bbadaae2f5710c59aeff9ef60095f7a (diff) | |
| parent | a5ff40c10716f3e5ef0de8536b5b436c47162975 (diff) | |
Merge branch 'master' into hierarchical-highlighters
Diffstat (limited to 'src/shell_manager.cc')
| -rw-r--r-- | src/shell_manager.cc | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/src/shell_manager.cc b/src/shell_manager.cc index d7caceb5..08c34160 100644 --- a/src/shell_manager.cc +++ b/src/shell_manager.cc @@ -108,21 +108,12 @@ String ShellManager::pipe(StringView input, setenv(("kak_" + name).c_str(), local_var->second.c_str(), 1); else { - auto env_var = std::find_if( - m_env_vars.begin(), m_env_vars.end(), - [&](const std::pair<Regex, EnvVarRetriever>& pair) - { return boost::regex_match(name.begin(), name.end(), - pair.first); }); - - if (env_var != m_env_vars.end()) + try { - try - { - String value = env_var->second(name, context); - setenv(("kak_"_str + name).c_str(), value.c_str(), 1); - } - catch (runtime_error&) {} + String value = get_val(name, context); + setenv(("kak_"_str + name).c_str(), value.c_str(), 1); } + catch (runtime_error&) {} } ++it; @@ -149,4 +140,17 @@ void ShellManager::register_env_var(StringView regex, m_env_vars.push_back({ Regex(regex.begin(), regex.end()), std::move(retriever) }); } +String ShellManager::get_val(StringView name, const Context& context) const +{ + auto env_var = std::find_if( + m_env_vars.begin(), m_env_vars.end(), + [&](const std::pair<Regex, EnvVarRetriever>& pair) + { return boost::regex_match(name.begin(), name.end(), + pair.first); }); + + if (env_var == m_env_vars.end()) + throw runtime_error("no such env var: " + name); + return env_var->second(name, context); +} + } |
