diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 84275bc34831995f70422a12c55190fe8d3cc5cc..8628b60b6190d3e9cdb2df00564e1b0a3538eeee 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -2552,7 +2552,9 @@ void BaseTextEditor::slotCursorPositionChanged()
         if (extraSelections(ParenthesesMatchingSelection).isEmpty()) {
             d->m_parenthesesMatchingTimer->start(50);
         } else {
-            _q_matchParentheses();
+             // use 0-timer, not direct call, to give the syntax highlighter a chance
+            // to update the parantheses information
+            d->m_parenthesesMatchingTimer->start(0);
         }
     }
 
@@ -3536,6 +3538,7 @@ void BaseTextEditor::_q_matchParentheses()
         return;
 
 
+    qDebug() << "_q_matchParentheses()" << textCursor().position();
     QTextCursor backwardMatch = textCursor();
     QTextCursor forwardMatch = textCursor();
     const TextBlockUserData::MatchType backwardMatchType = TextBlockUserData::matchCursorBackward(&backwardMatch);
@@ -3545,11 +3548,13 @@ void BaseTextEditor::_q_matchParentheses()
 
     if (backwardMatchType == TextBlockUserData::NoMatch && forwardMatchType == TextBlockUserData::NoMatch) {
         setExtraSelections(ParenthesesMatchingSelection, extraSelections); // clear
+        qDebug() << "no match";
         return;
     }
 
     int animatePosition = -1;
     if (backwardMatch.hasSelection()) {
+        qDebug() << "backward match";
         QTextEdit::ExtraSelection sel;
         if (backwardMatchType == TextBlockUserData::Mismatch) {
             sel.cursor = backwardMatch;
@@ -3578,6 +3583,7 @@ void BaseTextEditor::_q_matchParentheses()
     }
 
     if (forwardMatch.hasSelection()) {
+        qDebug() << "forward match";
         QTextEdit::ExtraSelection sel;
         if (forwardMatchType == TextBlockUserData::Mismatch) {
             sel.cursor = forwardMatch;