Separate tab completion of the initial [ for lists
US: https://tree.taiga.io/project/jktjkt-netconf-cli/us/144
Change-Id: I03ffc2830c62bbf833fb1075e2dbead55b0ca838
diff --git a/src/parser.cpp b/src/parser.cpp
index ff262fc..85793a0 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -67,11 +67,18 @@
int completionContext = line.end() - completionIterator;
- auto set = filterByPrefix(ctx.m_suggestions, std::string(completionIterator, line.end()));
- if (set.size() == 1) {
- return {{(*set.begin()) + ctx.m_completionSuffix}, completionContext};
+ auto filtered = filterByPrefix(ctx.m_suggestions, std::string(completionIterator, line.end()));
+ if (filtered.size() == 1) {
+ auto suffix = filtered.begin()->m_whenToAdd == Completion::WhenToAdd::IfFullMatch
+ && filtered.begin()->m_value == std::string{completionIterator, line.end()}
+ ? filtered.begin()->m_suffix
+ : "";
+ return {{filtered.begin()->m_value + suffix}, completionContext};
}
- return {set, completionContext};
+
+ std::set<std::string> res;
+ std::transform(filtered.begin(), filtered.end(), std::inserter(res, res.end()), [](auto it) { return it.m_value; });
+ return {res, completionContext};
}
void Parser::changeNode(const dataPath_& name)