Matt Cheddar wrote:
I'm updating a treeview (showing a list of functions, etc. in the current 
document), after text has been inserted or deleted from a Scintilla control 
with a custom lexer. The treeview is updated based on the text inserted, its 
style data, and information on where the insert/delete takes place and the 
number of lines added/removed.

Handling SC_MOD_INSERTTEXT and SC_MOD_DELETETEXT in the SCN_MODIFIED 
notification would be perfect except that the style data has not been updated 
at this point (SCN_STYLENEEDED is sent later) and it is not permitted to 
perform the styling in SCN_MODIFIED. At the moment i am styling it in a 
separate buffer when SC_MOD_INSERTTEXT/SC_MOD_DELETETEXT is received and then 
performing the update. However, this wastes time and memory because the text 
has to be styled later in SCN_STYLENEEDED so i wish to avoid this double 
styling.

I am thinking perhaps i should create a queue of the relevant 
SC_MOD_INSERTTEXT/SC_MOD_DELETETEXT information and process it in 
SCN_STYLENEEDED after styling has taken place. Or is it guaranteed there is a 
1-1 relationship between SC_MOD_INSERTTEXT/SC_MOD_DELETETEXT and 
SCN_STYLENEEDED, i.e. for each insert/delete there will be one and only one 
SCN_STYLENEEDED (sent before any more insert/delete notifications) so i can 
abandon the queue and handle the one latest insert/delete in SCN_STYLENEEDED? 
Or is there (hopefully!) a simpler method?

Have you tried working with the CVS version of Scintilla? Neil relaxed some of the restrictions on updating in modify event handlers *after* 1.72 was released (you don't mention what version you are using, which will usually make it harder for anyone to help you).

Robert Roessler
[EMAIL PROTECTED]
http://www.rftp.com
_______________________________________________
Scintilla-interest mailing list
[email protected]
http://mailman.lyra.org/mailman/listinfo/scintilla-interest

Reply via email to