Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > SynUniHighlighter и SynEdit > Использование в правилах символа табуляции...


Автор: Vitalik 30.12.2004, 20:27
Собственно возник вопрос: как бы лучше сделать возможность использования символа табуляции в определении правил подсветки?
Ведь в текстовое поле его ввести нельзя.
Как вариант можно придумать для него определённую последовательность символов. Например, \t или #9. Но это мне кажется не очень гибким решением smile
Или же можно добавить что-то вроде опции: считать пробелы, введённые в правиле, произвольной последовательностью пробелов и табуляций (и может быть даже символов конца строки, если надо). Но это решение не подходит, если надо чётко задать позицию символа табуляции в определении правила... smile
Еще одним не очень хорошим решением есть замена обыкновенного текстового поля TEdit на многострочное TMemo, в которое уже можно вводить символы табуляции. Но для этого нужно будеть лишить пользователя возможности вводить несколько строк в это поле... А также решить сопутствующие проблемы... smile

Есть у кого-нибудь еще какие-нибудь идеи для решения этой проблемки? smile

Автор: Vit 5.1.2005, 17:23
Крокозяблик использовать, что-то типа ‡

Автор: Vitalik 6.1.2005, 12:25
Цитата(Vit @ 5.1.2005, 17:23)
Крокозяблик использовать, что-то типа ‡

Интересная идея! Только наверное лучше тогда такой значок: »

Хм... Вот только... А если кому-нибудь надо будет именно такие значки подсвечивать или в правилах использовать? Не универсальное решение получается smile

Автор: Vit 6.1.2005, 13:33
вряд-ли... что-то не видел я крокозябликов...

Автор: Vitalik 6.1.2005, 14:21
Цитата(Vit @ 6.1.2005, 13:33)
вряд-ли... что-то не видел я крокозябликов...

Под крокозябликом мы понимаем один из символов (входящих в стандартную кодировку Windows), которого нет на клавиатуре, так? smile

А крокозяблики эти можно с успехом использовать не в каких-то схемах к языкам программирования, а просто для своих файлов (со своим форматом)...

Кстати, если уж действительно использовать для табуляции какой-нить крокозяблик, то как его лучше вводить в наше текстовое поле? Какое-нить сочетание клавиш забронировать?

Автор: Vit 6.1.2005, 16:26
Цитата(Vitalik @ 6.1.2005, 05:21)
Кстати, если уж действительно использовать для табуляции какой-нить крокозяблик, то как его лучше вводить в наше текстовое поле? Какое-нить сочетание клавиш забронировать?


Да, или кнопку

Цитата(Vitalik @ 6.1.2005, 05:21)
Под крокозябликом мы понимаем один из символов (входящих в стандартную кодировку Windows), которого нет на клавиатуре, так?


Да

Автор: Ciber SLasH 8.1.2005, 23:54
Лучше вообще перейти на регулярные выражения. Тогда всё гораздо упростится и будет гораздо больше возможностей для подсветок. smile

Автор: Vitalik 8.1.2005, 23:58
Цитата(Ciber @ 8.1.2005, 23:54)
Лучше вообще перейти на регулярные выражения. Тогда всё гораздо упростится и будет гораздо больше возможностей для подсветок.

Да, наверное, оно и действительно лучше... Но тогда ведь (боюсь) будет страдать скорость...
Хотя RegEx можно будет сделать опциональным... smile

Автор: Ciber SLasH 9.1.2005, 00:03
Я думаю скорость не на много пострадает, а может быть где-то будут и быстрее работать алгоритмы поиска RegEx'ов.

Попробуй сделать две версии: 1) как сейчас; 2) полностью переписать движок с использованием только RegExp.
И сравнишь скорость работы двух версий. smile

Автор: ShadOFF 13.3.2005, 06:24
Как же можно сделать чтобы подсвечивалось слово перед которым 1 или 2 знака табуляции, если я использую highlighter?

Автор: Vit 13.3.2005, 07:07
Во первых, к дополнению предыдущего автора, вот вся дисскуссия: http://forum.sources.ru/index.php?showtopic=86369

Во-вторых, предлагаю всегда добавлять TAB к списку делимитеров, просто не представляю себе ситуацию когда TAB не будет являться делимитером.




Автор: Vitalik 13.3.2005, 11:50
Цитата(Vit @ 13.3.2005, 07:07)
Во первых, к дополнению предыдущего автора, вот вся дисскуссия: http://forum.sources.ru/index.php?showtopic=86369

Весело! smile
Действительно на форумах не получается просто так ввести 	 smile
Как вариант, может ввести такие символы: &#9&#59; и на форуме это отобразится как 	 http://forum.sources.ru/smiles/Main/wink.gif
(Извините за оффтопик)

Цитата(Vit @ 13.3.2005, 07:07)
Во-вторых, предлагаю всегда добавлять TAB к списку делимитеров, просто не представляю себе ситуацию когда TAB не будет являться делимитером.

На сколько мне известно - сейчас так и сделано. Вопрос лишь стоял об добавлении такой новой опции: "нужна ли вам табуляция в разделителях (они же делимитеры)"

Цитата(ShadOFF @ 13.3.2005, 06:24)
Как же можно сделать чтобы подсвечивалось слово перед которым 1 или 2 знака табуляции, если я использую highlighter?

ShadOFF, какую версию компонента SynUniHighlighter ты используешь (когда и откуда качал)?

Вот я наваял маленький примерчик, показывающий, что с последней версией всё отлично работает (на старых версиях не проверял).

Автор: ShadOFF 15.3.2005, 02:26
Качал отсюда:
http://chicago.lastplanet.com/SynEdit.zip
Если не сложно, можно этот примерчик на билдер перевести, а то у меня тут возникает проблема в переводе (Unit1.dfm):
'<UniHighlighter version="1.8.1">'#13#10' <Info>'#13#10' <General Name=""' +
' Extensions=""/>'#13#10' <Author Name="" Email="" Web="" Copyright=' +
'"" Company="" Remark=""/>'#13#10' <Version Version="0" Revision="0"' +
' Date="0"/>'#13#10' <History>'#13#10' </History>'#13#10' <Sample>'#13#10' </' +
'Sample>'#13#10' </Info>'#13#10' <Scheme File="" Name=""/>'#13#10' <Range Name="' +
'Root" Attributes="536870911,-16777211;False:False." Style=""'#13#10' ' +
' Delimiters="!&quot;#$%&amp;'#39'()*+,-./:;&lt;=&gt;?@[\]^`{|}' +
'~">'#13#10' <Rule/>'#13#10' <Keywords Name="Hello" Attributes="5368709' +
'11,16776960;True:False." Style="">'#13#10' <word value="Hello"/>'#13 +
#10' </Keywords>'#13#10' <Keywords Name="world" Attributes="5368709' +
'11,65535;True:False." Style="">'#13#10' <word value="world"/>'#13#10' ' +
' </Keywords>'#13#10' <Range Name="Remark smile" Attributes="8421504,-' +
'16777211;False:True." Style=""'#13#10' Delimiters="!&quot;#$' +
'%&amp;'#39'()*+,-./:;&lt;=&gt;?@[\]^`{|}~">'#13#10' <Rule OpenSymbol=' +
'"--"/>'#13#10' </Range>'#13#10' </Range>'#13#10' <CopyRight>Rule file for Uni' +
'Highlighter Delphi component (Copyright© Fantasist(walking_in_' +
'[email protected]), Vit([email protected]), Vitalik(vetal-x@mai' +
'l.ru), 2002-2004)</CopyRight>'#13#10'</UniHighlighter>'#13#10


Надо все менять? или просто список делимитеров?

Автор: Vitalik 15.3.2005, 17:25
ShadOFF, как вариант, скопируй новую версию SynUniSyn отсюда: http://forum.vingrad.ru/index.php?showtopic=34021

Автор: ShadOFF 17.3.2005, 02:20
Эта новая версия только для делфи, а мне бы для билдера...

Автор: Vitalik 17.3.2005, 21:36
Оки, я создам bpk файл для билдера smile

Хотя можешь и сам его создать smile

Автор: Vitalik 17.3.2005, 23:02
Хм... Там небольшая проблемка возникла.
Почему-то не получается указать bpk-пакету установки SynUniHighlighter'a на местоположение исходников SynEdit'a. Почему-то не видит он их и всё тут... smile
Не находит ни SynEdit.inc, ни SynEditTypes, ни другие файлы SynEdit'a...


 ! 
 
Временное решение проблемы установки компонента под Билдер можно прочитать здесь: "Установка SynUni для C++ Builder"

Если есть желание помочь правильно устранить эту проблему, то, пожалуйста, зайдите сюда: "Создание bpk-пакета для компонента"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)