void KateBuffer::setHighlight(uint hlMode) { KateHighlighting *h = KateHlManager::self()->getHl(hlMode); // aha, hl will change if (h != m_highlight) { bool invalidate = !h->noHighlighting(); if (m_highlight) { m_highlight->release(); invalidate = true; } h->use(); // Clear code folding tree (see bug #124102) m_regionTree.clear(); m_regionTree.fixRoot(m_lines); // try to set indentation if (!h->indentation().isEmpty()) m_doc->config()->setIndentationMode (KateAutoIndent::modeNumber(h->indentation())); m_highlight = h; if (invalidate) invalidateHighlighting(); // inform the document that the hl was really changed // needed to update attributes and more ;) m_doc->bufferHlChanged (); } }
//BEGIN KateHlManager KateHlManager::KateHlManager() : QObject() , m_config ("katesyntaxhighlightingrc", KConfig::NoGlobals) , commonSuffixes (QString(".orig;.new;~;.bak;.BAK").split(';')) , syntax (new KateSyntaxDocument(&m_config)) , dynamicCtxsCount(0) , forceNoDCReset(false) { KateSyntaxModeList modeList = syntax->modeList(); hlList.reserve(modeList.size() + 1); hlDict.reserve(modeList.size() + 1); for (int i=0; i < modeList.count(); i++) { KateHighlighting *hl = new KateHighlighting(modeList[i]); hlList.insert (qLowerBound(hlList.begin(), hlList.end(), hl, compareKateHighlighting), hl); hlDict.insert (hl->name(), hl); } // Normal HL KateHighlighting *hl = new KateHighlighting(0); hlList.prepend (hl); hlDict.insert (hl->name(), hl); lastCtxsReset.start(); }
QString KateHlManager::identifierForName(const QString& name) { KateHighlighting *hl = 0; if ((hl = hlDict[name])) return hl->getIdentifier (); return QString(); }
//BEGIN KateHlManager KateHlManager::KateHlManager() : QObject() , m_config ("katesyntaxhighlightingrc", KConfig::NoGlobals) , commonSuffixes (QString(".orig;.new;~;.bak;.BAK").split(';')) , syntax (new KateSyntaxDocument(&m_config)) , dynamicCtxsCount(0) , forceNoDCReset(false) { KateSyntaxModeList modeList = syntax->modeList(); for (int i=0; i < modeList.count(); i++) { KateHighlighting *hl = new KateHighlighting(modeList[i]); int insert = 0; for (; insert <= hlList.count(); insert++) { if (insert == hlList.count()) break; if ( QString(hlList.at(insert)->section() + hlList.at(insert)->nameTranslated()).toLower() > QString(hl->section() + hl->nameTranslated()).toLower() ) break; } hlList.insert (insert, hl); hlDict.insert (hl->name(), hl); } // Normal HL KateHighlighting *hl = new KateHighlighting(0); hlList.prepend (hl); hlDict.insert (hl->name(), hl); lastCtxsReset.start(); }