Some optimizations implemented for decorators. When a call is made
to change a range to a value it already has then no modifications are
made, the display is not repainted and the container does not receive
a notification. When the range is already partly in the value then the
start and end parts of the range that already have this value are
trimmed off for updates.

  A new modification flag SC_MOD_CHANGEINDICATOR is used when an
indicator is changed instead of SC_MOD_CHANGESTYLE. This allows
containers to ignore these by changing the event mask. Since adding
and removing indicators does not affect text layout, these are faster.

  No lexers use the new indicator code yet but I have been
experimenting with the Python lexer. It currently resets the whole
range being lexed and then fills in the bad indentation ranges. This
is not optimal as there will often be no need to change the bad
indentation indicators so this will probably change to keeping a
current state flag while lexing and filling whenever the state
changes. This is still not as efficient as the current code which
buffers up indicator changes with style changes but will probably be
OK.

  Committed to CVS.

  Neil
_______________________________________________
Scintilla-interest mailing list
[email protected]
http://mailman.lyra.org/mailman/listinfo/scintilla-interest

Reply via email to