diff options
-rw-r--r-- | doc/ScintillaHistory.html | 4 | ||||
-rw-r--r-- | lexers/LexJSON.cxx | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index ea02b5a4b..ad70afba9 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -504,6 +504,7 @@ </tr> </tr><tr> <td>Roberto Rossi</td> + <td>Kenny Liu</td> </tr> </table> <p> @@ -523,6 +524,9 @@ Released 16 October 2016. </li> <li> + JSON folder fixed where it didn't resume folding with the correct fold level. + </li> + <li> Margin click to select line now clears rectangular and additional selections. </li> <li> 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) { |