Как можно быстро подсвечивать синтаксис в текстовом редакторе.Я использовал такой подход:Сначала выделяю слово, а затем изменяю его цвет с помоцью процедур
Procedure EditorGadgetLocate(Gadget,x,y,length) ; Set cursor position
REG = GadgetID(Gadget)
CharIdx = SendMessage_(REG,#EM_LINEINDEX,y-1,0)
LLength = SendMessage_(REG,#EM_LINELENGTH,CharIdx,0)
If LLength >= x-1
CharIdx + x-1
EndIf
Range.CHARRANGE
Range\cpMin = CharIdx
Range\cpMax = CharIdx+length
SendMessage_(REG,#EM_EXSETSEL,0,Range)
EndProcedure
Procedure EditorGadgetColor(Gadget, Color.l)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_COLOR
format\crTextColor = Color
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, format)
EndProcedure
Этот способ работает, но есть несколько недостатков.Во первых, скорость подсвечивания низкая.Во вторых, текст начинает дрожать по горизонтали, если длина строки превышает ширину редактора.Может кто знает, как правильно подсвечивать синтаксис, ведь как-то это сделали в редакторе PB.