summaryrefslogtreecommitdiff
path: root/src/command_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-06-03 14:46:44 +1000
committerMaxime Coste <mawww@kakoune.org>2018-07-05 07:54:28 +1000
commit27163106c74fdee8af923daf4345f1c90f9d8b1d (patch)
treebae979ee43ba1dec5c6e346db310fd2f4dc03b6e /src/command_manager.cc
parentd6c6ed9bbf9185ad80f640078202c80cf1b2ae4e (diff)
Make register expansions expand to the full register content
Now that we have a nice standard way to express lists of strings, registers can be fully exposed. An new $kak_main_reg_... env var was added to provide the previous behaviour which is relied on by doc.kak.
Diffstat (limited to 'src/command_manager.cc')
-rw-r--r--src/command_manager.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc
index c3dfc7c4..a554daa2 100644
--- a/src/command_manager.cc
+++ b/src/command_manager.cc
@@ -263,6 +263,16 @@ auto expand_option(Option& opt, std::false_type)
return opt.get_as_strings();
}
+auto expand_register(StringView reg, const Context& context, std::true_type)
+{
+ return join(RegisterManager::instance()[reg].get(context) | transform(quote), ' ', false);
+}
+
+auto expand_register(StringView reg, const Context& context, std::false_type)
+{
+ return RegisterManager::instance()[reg].get(context) | gather<Vector<String>>();
+}
+
String expand_arobase(ConstArrayView<String> params, std::true_type)
{
return join(params, ' ', false);
@@ -298,7 +308,7 @@ expand_token(const Token& token, const Context& context, const ShellContext& she
return {str};
}
case Token::Type::RegisterExpand:
- return {context.main_sel_register_value(content).str()};
+ return expand_register(content, context, IsSingle{});
case Token::Type::OptionExpand:
return expand_option(context.options()[content], IsSingle{});
case Token::Type::ValExpand: