diff options
| author | Maxime Coste <mawww@kakoune.org> | 2021-07-09 17:03:22 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2021-07-09 17:03:22 +1000 |
| commit | cd67f2cf113704fce973ce7139f8cdac2561c139 (patch) | |
| tree | f61a04fdaae36ee0918aa7f7242702c5bd560d33 /src/command_manager.cc | |
| parent | cac946b43470c5769d2cd265934829b7121ecd9b (diff) | |
Avoid copying token content strings in expand_token
We can move that data instead of copying
Diffstat (limited to 'src/command_manager.cc')
| -rw-r--r-- | src/command_manager.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc index 6191a1e6..113b4298 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -323,9 +323,9 @@ Token parse_percent_token(Reader& reader, bool throw_on_unterminated) template<bool single> std::conditional_t<single, String, Vector<String>> -expand_token(const Token& token, const Context& context, const ShellContext& shell_context) +expand_token(Token&& token, const Context& context, const ShellContext& shell_context) { - auto& content = token.content; + auto&& content = token.content; switch (token.type) { case Token::Type::ShellExpand: @@ -386,7 +386,7 @@ expand_token(const Token& token, const Context& context, const ShellContext& she return {expand(content, context, shell_context)}; case Token::Type::Raw: case Token::Type::RawQuoted: - return {content}; + return {std::move(content)}; default: kak_assert(false); } return {}; @@ -569,7 +569,7 @@ void CommandManager::execute(StringView command_line, shell_context.params.end()); else { - auto tokens = expand_token<false>(*token, context, shell_context); + auto tokens = expand_token<false>(*std::move(token), context, shell_context); params.insert(params.end(), std::make_move_iterator(tokens.begin()), std::make_move_iterator(tokens.end())); |
