diff options
| -rw-r--r-- | doc/ScintillaHistory.html | 4 | ||||
| -rw-r--r-- | src/ContractionState.cxx | 16 | 
2 files changed, 16 insertions, 4 deletions
| diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index 0c1275d89..66fcaf36b 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -568,6 +568,10 @@  	<a href="https://sourceforge.net/p/scintilla/feature-requests/1280/">Feature #1280</a>.  	</li>  	<li> +	Improved performance of line folding code on large files when no folds are contracted. +	This improves the time taken to open or close large files. +	</li> +	<li>  	Fix bug where changing identifier sets in lexers preserved previous identifiers.  	</li>  	<li> diff --git a/src/ContractionState.cxx b/src/ContractionState.cxx index 565f9e141..8b5821470 100644 --- a/src/ContractionState.cxx +++ b/src/ContractionState.cxx @@ -210,16 +210,24 @@ Sci::Line ContractionState<LINE>::DocFromDisplay(Sci::Line lineDisplay) const {  template <typename LINE>  void ContractionState<LINE>::InsertLines(Sci::Line lineDoc, Sci::Line lineCount) { -	for (Sci::Line l = 0; l < lineCount; l++) { -		InsertLine(lineDoc + l); +	if (OneToOne()) { +		linesInDocument += static_cast<LINE>(lineCount); +	} else { +		for (Sci::Line l = 0; l < lineCount; l++) { +			InsertLine(lineDoc + l); +		}  	}  	Check();  }  template <typename LINE>  void ContractionState<LINE>::DeleteLines(Sci::Line lineDoc, Sci::Line lineCount) { -	for (Sci::Line l = 0; l < lineCount; l++) { -		DeleteLine(lineDoc); +	if (OneToOne()) { +		linesInDocument -= static_cast<LINE>(lineCount); +	} else { +		for (Sci::Line l = 0; l < lineCount; l++) { +			DeleteLine(lineDoc); +		}  	}  	Check();  } | 
