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)