aboutsummaryrefslogtreecommitdiffhomepage
path: root/lexers/LexCPP.cxx
diff options
context:
space:
mode:
authornyamatongwe <devnull@localhost>2011-02-13 10:08:08 +1100
committernyamatongwe <devnull@localhost>2011-02-13 10:08:08 +1100
commite75470ad1d39842c12b407820c2886f7ae035ab9 (patch)
tree4668e914b8b3a00d69e6239c065edea184df400a /lexers/LexCPP.cxx
parent7cf9bf29bb2e51ca412e86b4a73cc5e4545115af (diff)
downloadscintilla-mirror-e75470ad1d39842c12b407820c2886f7ae035ab9.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();
}