Seems much more responsive here, but that's anecdotal - my largest
python node in the file I tested is 233 lines, so 3 passes/1.5 seconds.
Still, nice work.
-->Jake
On 7/2/2013 10:36 PM, Edward K. Ream wrote:
This looks like a great day for Leo. Here is the checkin log for 5820:
QQQ
Wrote and tested an incremental colorer. _reformatBlocks now only
colors 100 lines at a time, and then waits a full second.
The result is instant response, no matter how large the text.
It may be better to wait only 0.5 sec. [done in 5821]
This should halve the time to complete the drawing, while still
allowing instant responsiveness.
All unit tests pass, which is an excellent test of coloring.
QQQ
The code is simple. The crucial _reformatBlocks method, which is
itself a helper for the contentsChange (note: no final 'd') event
handler, now only colors 100 lines at a time. If more lines remain,
common code in _boundedReformatBlocks sets some ivars, and sets a
single-shot that will call a new _idleReformatBlocks, which does
exactly the same thing, again using _boundedReformatBlocks.
To the first and second approximations, the absolute slowdown in the
Python version of the QSyntaxHighlighter class doesn't matter. The
reason is that *Leo's* syntax coloring code (the code called by
rehighlight) is already much slower than the C++ code. In any case,
Leo now *appears* to color large text faster, even though it really
doesn't. Sweet.
Despite initial testing, race conditions could conceivably cause hard
Python crashes. But the necessary guards are simple: _reformatBlocks
clears the new ivars, so even if _idleReformatBlocks gets called "by
mistake" later, nothing bad will happen.
Edward
--
You received this message because you are subscribed to the Google
Groups "leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/groups/opt_out.