change highlight regexp boundaries from \b to \W
authorDaniel Albers <daniel@lbers.com>
Wed, 12 Aug 2009 22:45:00 +0000 (00:45 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Mon, 17 Aug 2009 10:07:16 +0000 (12:07 +0200)
fixes #708
\b is between \w\W or \W\w, therefore doesn't match "^nickname^ something" due to "^ " being \W\W characters

src/qtui/qtuimessageprocessor.cpp

index 353928a..e245a7b 100644 (file)
@@ -119,8 +119,7 @@ void QtUiMessageProcessor::checkForHighlight(Message &msg) {
         nickList.prepend(net->myNick());
     }
     foreach(QString nickname, nickList) {
         nickList.prepend(net->myNick());
     }
     foreach(QString nickname, nickList) {
-      QRegExp nickRegExp("\\b" + QRegExp::escape(nickname) + "(\\W|\\b|$)", // + "\\b", this does not seem to work for trailing ` -> upstream bug?
-                          _nicksCaseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive);
+      QRegExp nickRegExp("(^|\\W)" + QRegExp::escape(nickname) + "(\\W|$)", _nicksCaseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive);
       if(nickRegExp.indexIn(msg.contents()) >= 0) {
         msg.setFlags(msg.flags() | Message::Highlight);
         return;
       if(nickRegExp.indexIn(msg.contents()) >= 0) {
         msg.setFlags(msg.flags() | Message::Highlight);
         return;
@@ -137,7 +136,7 @@ void QtUiMessageProcessor::checkForHighlight(Message &msg) {
         QRegExp rx(rule.name, rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive);
         match = rx.exactMatch(msg.contents());
       } else {
         QRegExp rx(rule.name, rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive);
         match = rx.exactMatch(msg.contents());
       } else {
-        QRegExp rx("\\b" + QRegExp::escape(rule.name) + "\\b", rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive);
+        QRegExp rx("\\W" + QRegExp::escape(rule.name) + "\\W", rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive);
         match = (rx.indexIn(msg.contents()) >= 0);
       }
       if(match) {
         match = (rx.indexIn(msg.contents()) >= 0);
       }
       if(match) {