From b3a8e85b0ff1281a542213b95924aad8927817be Mon Sep 17 00:00:00 2001 From: Johannes Altmanninger Date: Thu, 15 Sep 2022 04:07:25 +0200 Subject: [PATCH] complete: use remove_if+erase instead of raw loop to remove leading decorators In theory this does less work so we should generally use this style. In practice it looks uglier so I'm not sure. Maybe wait for stdlib ranges... No functional change. --- src/complete.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/complete.cpp b/src/complete.cpp index d46bdbb18..acc3dec78 100644 --- a/src/complete.cpp +++ b/src/complete.cpp @@ -1511,8 +1511,12 @@ void completer_t::perform_for_commandline(wcstring cmdline) { // Hack: fix autosuggestion by removing prefixing "and"s #6249. if (is_autosuggest) { - while (!tokens.empty() && parser_keywords_is_subcommand(tokens.front().get_source(cmdline))) - tokens.erase(tokens.begin()); + tokens.erase( + std::remove_if(tokens.begin(), tokens.end(), + [&cmdline](const tok_t &token) { + return parser_keywords_is_subcommand(token.get_source(cmdline)); + }), + tokens.end()); } // Consume variable assignments in tokens strictly before the cursor.