ItemTagsLoader::Tags ItemTagsLoader::toTags(const QStringList &tagList) { Tags tags; for (const auto &tagText : tagList) { QString tagName = tagText.trimmed(); Tag tag = findMatchingTag(tagName, m_tags); if (isTagValid(tag)) { if (tag.match.isEmpty()) { tag.name = tagName; } else { const QRegExp re(tag.match); tag.name = QString(tagName).replace(re, tag.name); } } else { tag.name = tagName; // Get default tag style from theme. const QSettings settings; tag.color = settings.value("Theme/num_fg").toString(); } tags.append(tag); } return tags; }
static void run_tag_highlighter(ScintillaObject *sci) { gint position = sci_get_current_position(sci); gint lineNumber = sci_get_current_line(sci); gint lineStart = sci_get_position_from_line(sci, lineNumber); gint lineEnd = sci_get_line_end_position(sci, lineNumber); gint openingBracket = findBracket(sci, position, lineStart, '<', '>', FALSE); gint closingBracket = findBracket(sci, position, lineEnd, '>', '<', TRUE); int i; if(-1 == openingBracket || -1 == closingBracket) { clear_previous_highlighting(sci, highlightedBrackets[0], highlightedBrackets[1]); clear_previous_highlighting(sci, highlightedBrackets[2], highlightedBrackets[3]); for(i=0; i<3; i++) highlightedBrackets[i] = 0; return; } /* If the cursor jumps from one tag into another, clear * previous highlighted tags*/ if(openingBracket != highlightedBrackets[0] || closingBracket != highlightedBrackets[1]) { clear_previous_highlighting(sci, highlightedBrackets[0], highlightedBrackets[1]); clear_previous_highlighting(sci, highlightedBrackets[2], highlightedBrackets[3]); } /* Don't run search on empty brackets <> */ if (closingBracket - openingBracket > 1) { highlightedBrackets[0] = openingBracket; highlightedBrackets[1] = closingBracket; findMatchingTag(sci, openingBracket, closingBracket); } }