summaryrefslogtreecommitdiff
path: root/src/shell_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2020-03-01 13:28:06 +1100
committerMaxime Coste <mawww@kakoune.org>2020-03-02 20:53:28 +1100
commit0a66eb9c47ba9a7d3b90286d66a70b5bd7eee15a (patch)
tree66d125cdf38c006b9acacea73213da8deca13ed2 /src/shell_manager.cc
parentb8eef27e041ce68fda01f66e3cc902e97b25fbaf (diff)
Expand env vars as list of strings
This makes it possible to do :select `%val{selections_decs}` and to correctly combine $kak_quoted with those.
Diffstat (limited to 'src/shell_manager.cc')
-rw-r--r--src/shell_manager.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/shell_manager.cc b/src/shell_manager.cc
index 9c0604dd..8d70dd1c 100644
--- a/src/shell_manager.cc
+++ b/src/shell_manager.cc
@@ -152,8 +152,8 @@ Vector<String> generate_env(StringView cmdline, const Context& context, const Sh
auto var_it = shell_context.env_vars.find(name);
try
{
- const String& value = var_it != shell_context.env_vars.end() ?
- var_it->value : ShellManager::instance().get_val(name, context, quoting);
+ String value = var_it != shell_context.env_vars.end() ?
+ var_it->value : join(ShellManager::instance().get_val(name, context) | transform(quoter(quoting)), ' ', false);
StringView quoted{match[1].first, match[1].second};
kak_env.push_back(format("kak_{}{}={}", quoted, name, value));
@@ -327,7 +327,7 @@ std::pair<String, int> ShellManager::eval(
return { std::move(stdout_contents), WIFEXITED(status) ? WEXITSTATUS(status) : -1 };
}
-String ShellManager::get_val(StringView name, const Context& context, Quoting quoting) const
+Vector<String> ShellManager::get_val(StringView name, const Context& context) const
{
auto env_var = find_if(m_env_vars, [name](const EnvVarDesc& desc) {
return desc.prefix ? prefix_match(name, desc.str) : name == desc.str;
@@ -336,7 +336,7 @@ String ShellManager::get_val(StringView name, const Context& context, Quoting qu
if (env_var == m_env_vars.end())
throw runtime_error("no such env var: " + name);
- return env_var->func(name, context, quoting);
+ return env_var->func(name, context);
}
CandidateList ShellManager::complete_env_var(StringView prefix,