aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Document.cxx
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2021-05-08 15:20:59 +1000
committerNeil <nyamatongwe@gmail.com>2021-05-08 15:20:59 +1000
commitf0c53e7b25f12be66881acc110d815ec491f1533 (patch)
treee39ee8ce22b6f882ebcd2afcccf9fa1e71fd0a4e /src/Document.cxx
parent9547147a9ca0f258d5d25a0b0b116373ed29533f (diff)
downloadscintilla-mirror-f0c53e7b25f12be66881acc110d815ec491f1533.tar.gz
Feature [feature-requests:1373]. Make idle actions smoother by measuring
per-byte and allowing just one line to be processed in a time slice. Very long lines will not distort estimation or block interaction as much.
Diffstat (limited to 'src/Document.cxx')
-rw-r--r--src/Document.cxx7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/Document.cxx b/src/Document.cxx
index 21d492a8e..acb9f14bd 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -113,7 +113,7 @@ size_t ActionDuration::ActionsInAllowedTime(double secondsAllowed) const noexcep
Document::Document(int options) :
cb((options & SC_DOCUMENTOPTION_STYLES_NONE) == 0, (options & SC_DOCUMENTOPTION_TEXT_LARGE) != 0),
- durationStyleOneLine(0.00001, 0.000001, 0.0001) {
+ durationStyleOneByte(0.000001, 0.0000001, 0.00001) {
refCount = 0;
#ifdef _WIN32
eolMode = SC_EOL_CRLF;
@@ -2287,11 +2287,10 @@ void Document::EnsureStyledTo(Sci::Position pos) {
}
void Document::StyleToAdjustingLineDuration(Sci::Position pos) {
- const Sci::Line lineFirst = SciLineFromPosition(GetEndStyled());
+ const Sci::Position stylingStart = GetEndStyled();
ElapsedPeriod epStyling;
EnsureStyledTo(pos);
- const Sci::Line lineLast = SciLineFromPosition(GetEndStyled());
- durationStyleOneLine.AddSample(lineLast - lineFirst, epStyling.Duration());
+ durationStyleOneByte.AddSample(pos - stylingStart, epStyling.Duration());
}
void Document::LexerChanged() {