diff options
-rw-r--r-- | scintilla/lexers/LexSQL.cxx | 4 | ||||
-rw-r--r-- | scintilla/src/Partitioning.h | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/scintilla/lexers/LexSQL.cxx b/scintilla/lexers/LexSQL.cxx index a2eaaad..8fef2ff 100644 --- a/scintilla/lexers/LexSQL.cxx +++ b/scintilla/lexers/LexSQL.cxx @@ -555,7 +555,9 @@ void SCI_METHOD LexerSQL::Fold(unsigned int startPos, int length, int initStyle, */ /* notepad2-mod custom code end */
if (style == SCE_SQL_OPERATOR) {
if (ch == '(') {
- levelNext++;
+ if (levelCurrent > levelNext)
+ levelCurrent--;
+ levelNext++;
} else if (ch == ')') {
levelNext--;
} else if ((!options.foldOnlyBegin) && ch == ';') {
diff --git a/scintilla/src/Partitioning.h b/scintilla/src/Partitioning.h index d5b392a..01bdf8b 100644 --- a/scintilla/src/Partitioning.h +++ b/scintilla/src/Partitioning.h @@ -42,6 +42,10 @@ public: /// Divide an interval into multiple partitions.
/// Useful for breaking a document down into sections such as lines.
+/// A 0 length interval has a single 0 length partition, numbered 0
+/// If interval not 0 length then each partition non-zero length
+/// When needed, positions after the interval are considered part of the last partition
+/// but the end of the last partition can be found with PositionFromPartition(last+1).
class Partitioning {
private:
@@ -153,6 +157,7 @@ public: return pos;
}
+ /// Return value in range [0 .. Partitions() - 1] even for arguments outside interval
int PartitionFromPosition(int pos) const {
if (body->Length() <= 1)
return 0;
|