aboutsummaryrefslogtreecommitdiffhomepage
path: root/lexers/LexCPP.cxx
diff options
context:
space:
mode:
authornyamatongwe <unknown>2011-02-13 10:08:08 +1100
committernyamatongwe <unknown>2011-02-13 10:08:08 +1100
commit0e4ae90f839d6ab1bfbd84327ee498a96390172d (patch)
tree93e017190d0f7620d4b7bed9c92fe320a9c67084 /lexers/LexCPP.cxx
parenta66ec5a196b0207fa23c529a13cf5662d11b2b6f (diff)
downloadscintilla-mirror-0e4ae90f839d6ab1bfbd84327ee498a96390172d.tar.gz
Added Merge method to SparseState to make it possible to detect significant
changes in lexers which will require styling beyond the end of the current range.
Diffstat (limited to 'lexers/LexCPP.cxx')
-rw-r--r--lexers/LexCPP.cxx8
1 files changed, 4 insertions, 4 deletions
diff --git a/lexers/LexCPP.cxx b/lexers/LexCPP.cxx
index 92248f7f0..2e5fdd0d1 100644
--- a/lexers/LexCPP.cxx
+++ b/lexers/LexCPP.cxx
@@ -506,7 +506,7 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,
const int maskActivity = 0x3F;
std::string rawStringTerminator = rawStringTerminators.ValueAt(lineCurrent-1);
- bool changedRawStringState = rawStringTerminators.Delete(lineCurrent);
+ SparseState<std::string> rawSTNew(lineCurrent);
int activitySet = preproc.IsInactive() ? 0x40 : 0;
@@ -540,8 +540,7 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,
lineCurrent++;
vlls.Add(lineCurrent, preproc);
if (rawStringTerminator != "") {
- rawStringTerminators.Set(lineCurrent-1, rawStringTerminator);
- changedRawStringState = true;
+ rawSTNew.Set(lineCurrent-1, rawStringTerminator);
}
}
@@ -893,7 +892,8 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,
}
continuationLine = false;
}
- if (definitionsChanged || changedRawStringState)
+ const bool rawStringsChanged = rawStringTerminators.Merge(rawSTNew, lineCurrent);
+ if (definitionsChanged || rawStringsChanged)
styler.ChangeLexerState(startPos, startPos + length);
sc.Complete();
}