/* * This sets the folding indent: * 0 for the first line of the diff header. * 1 for all the following lines of the diff header and all @@ lines. * 2 for everything else */ void DiffHighlighter::highlightBlock(const QString &text) { Q_D(DiffHighlighter); if (text.isEmpty()) return; const int length = text.length(); const Internal::DiffFormats format = d->analyzeLine(text); switch (format) { case Internal::DiffTextFormat: break; case Internal::DiffInFormat: { // Mark trailing whitespace. const int trimmedLen = trimmedLength(text); setFormat(0, trimmedLen, formatForCategory(format)); if (trimmedLen != length) setFormat(trimmedLen, length - trimmedLen, d->m_addedTrailingWhiteSpaceFormat); } break; default: setFormat(0, length, formatForCategory(format)); break; } // codefolding: TextEditor::TextBlockUserData *data = TextEditor::TextDocumentLayout::userData(currentBlock()); QTC_ASSERT(data, return; );
int LuaHighlighter::highlightLine(QString const& text, int initialState) { Scanner scanner(text.constData(),text.length()); scanner.setState(initialState); FormatToken tk; bool hasOnlyWhitespace = true; while((tk = scanner.read()).format() != Format_EndOfBlock) { Format format = tk.format(); if(format == Format_Keyword) { if(isImportKeyword(scanner.value(tk)) && hasOnlyWhitespace) { setFormat(tk.begin(), tk.length(), formatForCategory(format)); highlightImport(scanner); break; } } setFormat(tk.begin(), tk.length(), formatForCategory(format)); if(format != Format_Whitespace) hasOnlyWhitespace = false; } return scanner.state(); }
/** * @brief Highlights rest of line as import directive */ void PythonHighlighter::highlightImport(Scanner &scanner) { FormatToken tk; while ((tk = scanner.read()).format() != Format_EndOfBlock) { Format format = tk.format(); if (tk.format() == Format_Identifier) format = Format_ImportedModule; setFormat(tk.begin(), tk.length(), formatForCategory(format)); } }
/* * This sets the folding indent: * 0 for the first line of the diff header. * 1 for all the following lines of the diff header and all @@ lines. * 2 for everything else */ void DiffAndLogHighlighter::highlightBlock(const QString &text) { if (text.isEmpty()) return; const int length = text.length(); const TextEditor::TextStyle format = d->analyzeLine(text); if (format == TextEditor::C_ADDED_LINE) { // Mark trailing whitespace. const int trimmedLen = trimmedLength(text); setFormatWithSpaces(text, 0, trimmedLen, formatForCategory(format)); if (trimmedLen != length) setFormat(trimmedLen, length - trimmedLen, d->m_addedTrailingWhiteSpaceFormat); } else if (format != TextEditor::C_TEXT) { setFormatWithSpaces(text, 0, length, formatForCategory(format)); } else { formatSpaces(text); } // codefolding: TextEditor::TextBlockUserData *data = TextEditor::TextDocumentLayout::userData(currentBlock()); QTC_ASSERT(data, return; );
void MercurialSubmitHighlighter::highlightBlock(const QString &text) { // figure out current state State state = static_cast<State>(previousBlockState()); if (text.startsWith(QLatin1String("HG:"))) { setFormat(0, text.size(), formatForCategory(Format_Comment)); setCurrentBlockState(state); return; } if (state == None) { if (text.isEmpty()) { setCurrentBlockState(state); return; } state = Header; } else if (state == Header) { state = Other; } setCurrentBlockState(state); // Apply format. switch (state) { case None: break; 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) { QTextCharFormat charFormat = format(0); charFormat.setFontItalic(true); setFormat(0, m_keywordPattern.matchedLength(), charFormat); } break; } }
void ProFileHighlighter::highlightBlock(const QString &text) { if (text.isEmpty()) return; QString buf; bool inCommentMode = false; QTextCharFormat emptyFormat; int i = 0; for (;;) { const QChar c = text.at(i); if (inCommentMode) { setFormat(i, 1, formatForCategory(ProfileCommentFormat)); } else { if (c.isLetter() || c == QLatin1Char('_') || c == QLatin1Char('.') || c.isDigit()) { buf += c; setFormat(i - buf.length()+1, buf.length(), emptyFormat); if (!buf.isEmpty() && m_keywords.isFunction(buf)) setFormat(i - buf.length()+1, buf.length(), formatForCategory(ProfileFunctionFormat)); else if (!buf.isEmpty() && m_keywords.isVariable(buf)) setFormat(i - buf.length()+1, buf.length(), formatForCategory(ProfileVariableFormat)); } else if (c == QLatin1Char('(')) { if (!buf.isEmpty() && m_keywords.isFunction(buf)) setFormat(i - buf.length(), buf.length(), formatForCategory(ProfileFunctionFormat)); buf.clear(); } else if (c == QLatin1Char('#')) { inCommentMode = true; setFormat(i, 1, formatForCategory(ProfileCommentFormat)); buf.clear(); } else { if (!buf.isEmpty() && m_keywords.isVariable(buf)) setFormat(i - buf.length(), buf.length(), formatForCategory(ProfileVariableFormat)); buf.clear(); } } i++; if (i >= text.length()) break; } applyFormatToSpaces(text, formatForCategory(ProfileVisualWhitespaceFormat)); }