summaryrefslogtreecommitdiff
path: root/src/command_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/command_manager.cc')
-rw-r--r--src/command_manager.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc
index 266b832d..c051a4bf 100644
--- a/src/command_manager.cc
+++ b/src/command_manager.cc
@@ -760,7 +760,9 @@ Completions CommandManager::complete(const Context& context,
auto& command = command_it->value;
- if (token.content.substr(0_byte, 1_byte) == "-")
+ auto is_switch = [](StringView s) { return s.substr(0_byte, 1_byte) == "-"; };
+
+ if (is_switch(token.content))
{
auto switches = Kakoune::complete(token.content.substr(1_byte), pos_in_token,
command.param_desc.switches |
@@ -771,7 +773,7 @@ Completions CommandManager::complete(const Context& context,
if (not command.completer)
return Completions{};
- auto params = tokens | skip(1) | transform(&Token::content) | gather<Vector>();
+ auto params = tokens | skip(1) | transform(&Token::content) | filter(std::not_fn(is_switch)) | gather<Vector>();
auto index = params.size() - 1;
return offset_pos(requote(command.completer(context, flags, params, index, pos_in_token), token.type), start);