From fafe964c71eb2e8c8d89f0e127e75df1f6bbd729 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh <orgad.shaneh@audiocodes.com> Date: Mon, 29 Apr 2013 07:45:40 +0300 Subject: [PATCH] Git: Fix commit message highlighting Task-number: QTCREATORBUG-5874 Change-Id: I287a7fbd2d1a3c39983d7a9ac820b190250a6484 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> --- src/plugins/git/gitsubmiteditorwidget.cpp | 35 +++++++++++++---------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/plugins/git/gitsubmiteditorwidget.cpp b/src/plugins/git/gitsubmiteditorwidget.cpp index 8c76d2fdc2d..26d0d7f526e 100644 --- a/src/plugins/git/gitsubmiteditorwidget.cpp +++ b/src/plugins/git/gitsubmiteditorwidget.cpp @@ -62,7 +62,7 @@ public: void highlightBlock(const QString &text); private: - enum State { Header, Comment, Other }; + enum State { None = -1, Header, Other }; const QTextCharFormat m_commentFormat; QRegExp m_keywordPattern; const QChar m_hashChar; @@ -71,7 +71,7 @@ private: GitSubmitHighlighter::GitSubmitHighlighter(QTextEdit * parent) : QSyntaxHighlighter(parent), m_commentFormat(commentFormat()), - m_keywordPattern(QLatin1String("^\\w+:")), + m_keywordPattern(QLatin1String("^[\\w-]+:")), m_hashChar(QLatin1Char('#')) { QTC_CHECK(m_keywordPattern.isValid()); @@ -80,25 +80,30 @@ GitSubmitHighlighter::GitSubmitHighlighter(QTextEdit * parent) : void GitSubmitHighlighter::highlightBlock(const QString &text) { // figure out current state - State state = Other; - const QTextBlock block = currentBlock(); - if (block.position() == 0) { + State state = static_cast<State>(previousBlockState()); + if (text.isEmpty()) { + if (state == Header) + state = Other; + setCurrentBlockState(state); + return; + } else if (text.startsWith(m_hashChar)) { + setFormat(0, text.size(), m_commentFormat); + return; + } else if (state == None) { state = Header; - } else { - if (text.startsWith(m_hashChar)) - state = Comment; } + + setCurrentBlockState(state); // Apply format. switch (state) { - case Header: { - QTextCharFormat charFormat = format(0); - charFormat.setFontWeight(QFont::Bold); - setFormat(0, text.size(), charFormat); - } + case None: break; - case Comment: - setFormat(0, text.size(), m_commentFormat); + case Header: { + QTextCharFormat charFormat = format(0); + charFormat.setFontWeight(QFont::Bold); + setFormat(0, text.size(), charFormat); break; + } case Other: // Format key words ("Task:") italic if (m_keywordPattern.indexIn(text, 0, QRegExp::CaretAtZero) == 0) { -- GitLab