[NEW_FEATURE] (Author: FLS) Enhance the performance of switching files if folding is applied.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1045 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
Don Ho 2013-05-20 13:02:44 +00:00
parent e2e7703241
commit 434638c611

View File

@ -1598,18 +1598,20 @@ void ScintillaEditView::activateBuffer(BufferID buffer)
void ScintillaEditView::getCurrentFoldStates(std::vector<size_t> & lineStateVector)
{
int maxLine = execute(SCI_GETLINECOUNT);
//-- FLS: xCodeOptimization1304: For active document get folding state from Scintilla.
//-- The code using SCI_CONTRACTEDFOLDNEXT is usually 10%-50% faster than checking each line of the document!!
int contractedFoldHeaderLine = 0;
for (int line = 0; line < maxLine; line++)
{
int level = execute(SCI_GETFOLDLEVEL, line);
if (level & SC_FOLDLEVELHEADERFLAG)
do {
contractedFoldHeaderLine = execute(SCI_CONTRACTEDFOLDNEXT, contractedFoldHeaderLine);
if (contractedFoldHeaderLine != -1)
{
bool expanded = isFolded(line);
if (!expanded)
lineStateVector.push_back(line);
//-- Store contracted line
lineStateVector.push_back(contractedFoldHeaderLine);
//-- Start next search with next line
contractedFoldHeaderLine++;
}
}
} while (contractedFoldHeaderLine != -1);
}
void ScintillaEditView::syncFoldStateWith(const std::vector<size_t> & lineStateVectorNew)