aboutsummaryrefslogtreecommitdiffhomepage
path: root/lexers/LexJSON.cxx
diff options
context:
space:
mode:
authoryonken <yonken@gmail.com>2016-10-14 18:40:02 +0800
committeryonken <yonken@gmail.com>2016-10-14 18:40:02 +0800
commit2c2d83f8b2d63137107e0e0ecfb041667d80e52f (patch)
treef676589d6ad1c86a3e4e5484337979732d2aea90 /lexers/LexJSON.cxx
parent3468e74bd70723987dc83ec3623b6839be3a1557 (diff)
downloadscintilla-mirror-2c2d83f8b2d63137107e0e0ecfb041667d80e52f.tar.gz
Fix JSON lexer folding bug.
Diffstat (limited to 'lexers/LexJSON.cxx')
-rw-r--r--lexers/LexJSON.cxx6
1 files changed, 4 insertions, 2 deletions
diff --git a/lexers/LexJSON.cxx b/lexers/LexJSON.cxx
index 9c044e52c..6c060611f 100644
--- a/lexers/LexJSON.cxx
+++ b/lexers/LexJSON.cxx
@@ -457,7 +457,9 @@ void SCI_METHOD LexerJSON::Fold(Sci_PositionU startPos,
LexAccessor styler(pAccess);
Sci_PositionU currLine = styler.GetLine(startPos);
Sci_PositionU endPos = startPos + length;
- int currLevel = styler.LevelAt(currLine) & SC_FOLDLEVELNUMBERMASK;
+ int currLevel = SC_FOLDLEVELBASE;
+ if (currLine > 0)
+ currLevel = styler.LevelAt(currLine - 1) >> 16;
int nextLevel = currLevel;
int visibleChars = 0;
for (Sci_PositionU i = startPos; i < endPos; i++) {
@@ -472,7 +474,7 @@ void SCI_METHOD LexerJSON::Fold(Sci_PositionU startPos,
}
}
if (atEOL || i == (endPos-1)) {
- int level = currLevel;
+ int level = currLevel | nextLevel << 16;
if (!visibleChars && options.foldCompact) {
level |= SC_FOLDLEVELWHITEFLAG;
} else if (nextLevel > currLevel) {