the highlighter could only change the text "viewable" at the moment
Thats the point. With the standard commands it is impossible to get the correct visible range. You have to implement some additional Functions to add these. I have done it, but it will only work on Win32.
With the loading in rem thingy, i think I've misunderstood you, because I was thinking of another Richedit tweak, which would mark the the text in ram and so the text wouldn't rendered in the default color before. Currently Richedit works this way:
--> Load Text
--> Display Text in Default
--> change colores and styles <-- the slowness issue
I have some good experience with highlighter code in Bmax and optimizing it. Maybe I could give you some hints to tweak your code a bit ;) so I would be pleased to test you app.