Could we start by doing the coloring as we do now, but only request it ~ 1sec after the node has been selected? This way, you wouldn't see the slowdown from coloring when quickly moving around with cursor keys.
On Mon, Jul 1, 2013 at 3:40 PM, Edward K. Ream <[email protected]> wrote: > Two days ago I took a look at the QSyntaxHighlighter (qsh) source code: > http://qt.gitorious.org/qt/qt/blobs/4.7/src/gui/text/qsyntaxhighlighter.cpp > > I was a bit surprised to see that this is just a thin wrapper over > QTextDocument methods. Yes, qsh is a useful wrapper, but Leo could do > without it. If we aren't tied to the qsh code, we are free to repackage it > in different ways. If nothing else, this is a useful thought experiment! > > The *vital* thing to keep in mind in the following discussion is that the > vast bulk of Leo's present (complex!) coloring code will remain unchanged. > I am only considering a slight repackaging of Leo's code. > > Suppose we did syntax coloring in a separate thread? This might solve the > performance problems completely! Body text would appear *instantly* in the > body pane, and the coloring would be applied "later". Of course, there are > issues: all the "real" coloring must be done in the gui thread, so there is > non-trivial coordination required. In particular, the code would have to > queue results that would then cause calls to setFormat in the main (gui) > thread. > > This morning, when I arose, I saw a simpler alternative. Suppose Leo does > all coloring at idle time? We get the same benefits, but with less > complications. No need for a separate thread: the idle-time code > "simulates" a separate thread. This is exciting. In essence, we just need > to do the processing of the over-ridden rehighlight method at idle time. > That is, Leo would recolor just one line at each idle time. This keeps the > response excellent. > > It might be possible to get a prototype working in just a few hours. I'll > do so asap. > > 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.
