summaryrefslogtreecommitdiff
path: root/src/shell_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-08-27 21:52:57 +1000
committerMaxime Coste <mawww@kakoune.org>2018-08-29 07:53:59 +1000
commit68aba9e353961ccae17183ccdc65c3c89bdcd6c6 (patch)
treed8930ba60ce8a3da06d31e7e1b9ea687f08ca866 /src/shell_manager.cc
parent373858f9bfb50fe2c5670beffbfe63654cc12314 (diff)
Use shell specific quoting for env vars
Add a test case to validate roundtrips between Kakoune and the shell.
Diffstat (limited to 'src/shell_manager.cc')
-rw-r--r--src/shell_manager.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/shell_manager.cc b/src/shell_manager.cc
index b92edb4c..3683c85f 100644
--- a/src/shell_manager.cc
+++ b/src/shell_manager.cc
@@ -138,7 +138,7 @@ Vector<String> generate_env(StringView cmdline, const Context& context, const Sh
try
{
const String& value = var_it != shell_context.env_vars.end() ?
- var_it->value : ShellManager::instance().get_val(name, context);
+ var_it->value : ShellManager::instance().get_val(name, context, Quoting::Shell);
kak_env.push_back(format("kak_{}={}", name, value));
} catch (runtime_error&) {}
@@ -312,7 +312,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) const
+String ShellManager::get_val(StringView name, const Context& context, Quoting quoting) const
{
auto env_var = find_if(m_env_vars, [name](const EnvVarDesc& desc) {
return desc.prefix ? prefix_match(name, desc.str) : name == desc.str;
@@ -321,7 +321,7 @@ String ShellManager::get_val(StringView name, const Context& context) const
if (env_var == m_env_vars.end())
throw runtime_error("no such env var: " + name);
- return env_var->func(name, context);
+ return env_var->func(name, context, quoting);
}
CandidateList ShellManager::complete_env_var(StringView prefix,