From 9c8850a46c8f8f16bb476fcd7d3d529e82796048 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Tue, 24 Nov 2020 13:40:23 +0100
Subject: [PATCH] Match on each word in the completer

---
 src/CompletionProxyModel.h | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/CompletionProxyModel.h b/src/CompletionProxyModel.h
index 91f937a4a..f4ec6a96d 100644
--- a/src/CompletionProxyModel.h
+++ b/src/CompletionProxyModel.h
@@ -3,6 +3,7 @@
 // Class for showing a limited amount of completions at a time
 
 #include <QAbstractProxyModel>
+#include <QRegularExpression>
 
 #include "CompletionModelRoles.h"
 #include "Logging.h"
@@ -136,6 +137,7 @@ public:
           : QAbstractProxyModel(parent)
         {
                 setSourceModel(model);
+                QRegularExpression splitPoints("\\s+|-");
 
                 for (int i = 0; i < sourceModel()->rowCount(); i++) {
                         if (i < 7)
@@ -148,14 +150,23 @@ public:
                             .toLower();
                         trie_.insert(string1.toUcs4(), i);
 
+                        for (const auto &e : string1.split(splitPoints, Qt::SkipEmptyParts)) {
+                                trie_.insert(e.toUcs4(), i);
+                        }
+
                         auto string2 =
                           sourceModel()
                             ->data(sourceModel()->index(i, 0), CompletionModel::SearchRole2)
                             .toString()
                             .toLower();
 
-                        if (!string2.isEmpty())
+                        if (!string2.isEmpty()) {
                                 trie_.insert(string2.toUcs4(), i);
+                                for (const auto &e :
+                                     string2.split(splitPoints, Qt::SkipEmptyParts)) {
+                                        trie_.insert(e.toUcs4(), i);
+                                }
+                        }
                 }
 
                 connect(
-- 
GitLab