Ejemplo n.º 1
0
void Highlighter::highlightBlock(const QString &text)
{
	QTextCharFormat fmt;
	fmt.setFont(QFont(m_Palette->mainFont, m_Palette->mainFontPointSize));
	setFormat(0, text.length(), fmt);

	foreach(const ::HighlightingRule& rule, kHighlightingRules.rules)
	{
		QRegExp expression(rule.pattern);
		int index = expression.indexIn(text);
		while (index >= 0)
		{
			index = expression.pos(rule.index);
			int length = expression.cap(rule.index).length();
			if (m_Formats.contains(rule.t))
			{
				fmt = m_Formats[rule.t];
				setFormat(index, length, fmt);
			}
			index = expression.indexIn(text, index + length);
		}
	}

	setCurrentBlockState(0);

	bool isMultiline = matchMultiline(text, kHighlightingRules.triSingle);
	if (!isMultiline)
		isMultiline = matchMultiline(text, kHighlightingRules.triDouble);
}
Ejemplo n.º 2
0
void BashHighlighter::highlightBlock(const QString& text) {

	for (RuleList::iterator it = __rules.begin();
	        it != __rules.end(); ++it) {
		int idx = (*it).pattern.indexIn(text, 0);
		while ( idx >= 0 ) {
			// Get index of Nth match
			idx = (*it).pattern.pos((*it).nth);
			int length = (*it).pattern.cap((*it).nth).length();
			setFormat(idx, length, (*it).format);
			idx = (*it).pattern.indexIn(text, idx + length);
		}
	}

	setCurrentBlockState(0);

	// Do multi-line strings
	bool isInMultilne = matchMultiline(text, triSingleQuote, 1, __basicStyles.value("string2"));
	if ( !isInMultilne )
	    isInMultilne = matchMultiline(text, triDoubleQuote, 2, __basicStyles.value("string2"));
}