|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
SynEdit подсветка синтаксиса
Всем привет. Решил познакомиться с компонентом SynEdit и поэтому полез в демки, а именно HighlighterDemo.
В этом демо представлен компонент (TSynCustomHighlighter) с собственной подсветкой слов 'hello', 'synEdit' и 'world': Код:
TSynSampleSyn = class(TSynCustomHighlighter) private fRange: TRangeState; fTokenID: TtkTokenKind; fIdentFuncTable: array[0..3] of TIdentFuncTableFunc; ... KeyWords: array[0..3] of UnicodeString = ( 'hello', 'synedit', 'world', 'highlighter' ); KeyIndices: array[0..3] of Integer = ( 0, 2, 1, 3 ); procedure TSynSampleSyn.InitIdent; var i: Integer; begin for i := Low(fIdentFuncTable) to High(fIdentFuncTable) do if KeyIndices[i] = -1 then fIdentFuncTable[i] := AltFunc; fIdentFuncTable[0] := FuncHello; fIdentFuncTable[2] := FuncWorld; fIdentFuncTable[1] := FuncSynedit; fIdentFuncTable[3] := FuncHightLight; ... function TSynSampleSyn.FuncHightLight(Index: Integer): TtkTokenKind; begin if IsCurrentToken(KeyWords[Index]) then Result := tkKey else Result := tkIdentifier; end; Но вот заставить, чтобы подсвечивалось ещё и 'highlighter', никак не выходит ... |
#2
|
||||
|
||||
"Руками" если заносить в массив слова на подсветку да в пасовское тело и не получится, основа всей системы Syn - это скриптование, отсюда сначало нужно вписать новые кейворды в файл с расширением *.msg в секцию KEYS (или в свою, с другими параметрами "подсветки"), а затем специальной утилитой SynGen.exe (есть в поставке исходниками) сгенерить для этих слов свой хеш (подсветка не считыванием слов из текста организована, а видимо сверкой контрольных сумм для них), в пример *.pas изменения пропишутся автоматом - не пользовал никогда подсветку раньше, но вот попробовал сейчас: оно так работает
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |