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.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc
index caae2776..22b365ea 100644
--- a/src/command_manager.cc
+++ b/src/command_manager.cc
@@ -831,7 +831,12 @@ Completions CommandManager::complete(const Context& context,
: Completions{start+1, cursor_pos, std::move(switches), Completions::Flags::Menu};
}
case ParametersParser::State::SwitchArgument:
- return Completions{};
+ {
+ const auto& switch_desc = command.param_desc.switches.get(raw_params.at(raw_params.size() - 2).substr(1_byte));
+ if (not *switch_desc.arg_completer)
+ return Completions{};
+ return offset_pos(requote((*switch_desc.arg_completer)(context, flags, raw_params.back(), pos_in_token), token.type), start);
+ }
case ParametersParser::State::Positional:
break;
}