diff options
| author | Maxime Coste <mawww@kakoune.org> | 2018-06-03 14:46:44 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2018-07-05 07:54:28 +1000 |
| commit | 27163106c74fdee8af923daf4345f1c90f9d8b1d (patch) | |
| tree | bae979ee43ba1dec5c6e346db310fd2f4dc03b6e /src/command_manager.cc | |
| parent | d6c6ed9bbf9185ad80f640078202c80cf1b2ae4e (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.cc | 12 |
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: |
