Модераторы: Vitalik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UniHighlighter 2.0 Beta1, Дата выпуска: 3.07.2006 :) 
:(
    Опции темы
Vitalik
  Дата 3.7.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Внимание!

После восьмимесячного перерыва выпущена таки версия компонента UniHighlighter 2.0 beta1smile

Об основным изменениях можно прочитать начиная с этого сообщения темы "UniHighlighter 2.0 Alpha", но попытаюсь все таки немного подытожить smile

Основные изменения в компоненте:
  • Возобновлена работа экспорта в HTML
  • Возможность задания подсветки на этапе проектирования формы
  • Проведена частичная адаптация компонента к Delphi 5, C++ Builder 5,6 (загрузка/сохранение для этих версий пока не работает из-за использования TXmlDocument, отсутствующего в этих средах)
  • Работа со встроенными атрибутами (может использоваться к примеру для определения атрибута по местоположению в подсвеченном тексте)
  • Реорганизация всего механизма загрузки/сохранения подсветок (в том числе возможность безпроблемного становления компонента на новый парсер или новый формат файла)
Изменения, связанные с дизайнером (редактором) для компонента
  • Дизайнер от версии 1.8 адаптирован к версии компонента 2.0 (в том числе поддержка CodeFolding и мультитегов)
  • Возможность использования встроенного дизайнера для компонента (на этапе проектирования формы)
  • Возможность использовать дизайнер не только в качестве exe'шника, но и вызывать одной строчкой в программе, передавая ему подсветку.
Некоторые мелкие изменения (все и не вспомнить)
  • Исправлена загрузка файлов версии 1.5 (сделано правильное считывание именно текущей цветовой схемы)
  • Исправлена ошибка при сбросе свойства FileName компонента после загрузки файла
  • Исправлено считывание свойства AllowNoSubs в правилах CodeFolding'а при загрузке из файла подсветки
  • Исправлена ошибка при неправильном считывании булевых свойств правил подсветки (Delphi6)
  • Убраны некоторые Warning'и Hint'ы (но не все, так как некоторые напоминают о некоторых моментах)
  • Исправлен текст Exception'а у LoadFromFile правил при неправильном формате файла
Примечание: модули и классы импорта подсветок из других форматов переименованы из SynUniImport* в SynUniFormat*

Скачать компонент можно, как обычно, здесь: www.unihighlighter.com/index.php?download=unihighlighter
Информацию по установке компонента желательно прочитать здесь: www.unihighlighter.com/index.php?showpage=install

P.S. В архив компонента входят исходники, установочные пакеты и одна демка UniManager (остальные демки можно взять из архива UniHighlighter 2.0 Alpha)

P.P.S. Я уезжаю на неделю, поэтому своевременно ответить не смогу. Но все же пишите сюда все багрепорты по поводу этой бетки smile  

Это сообщение отредактировал(а) Vitalik - 3.7.2006, 16:28
PM MAIL WWW ICQ YIM   Вверх
miksayer
Дата 4.7.2006, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.11.2004

Репутация: нет
Всего: 1



абудет ли версия для 2006-ых Делфи и Билдера? 
PM MAIL   Вверх
Sep.
Дата 4.7.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Пока никаких багов не найдено =)
Цитата(Vitalik @  3.7.2006,  16:26 Найти цитируемый пост)
Работа со встроенными атрибутами (может использоваться к примеру для определения атрибута по местоположению в подсвеченном тексте)

Не могу найти как доступ к ним получать =( Может кто знает?

Цитата(Vitalik @  3.7.2006,  16:26 Найти цитируемый пост)
Возможность использовать дизайнер не только в качестве exe'шника, но и вызывать одной строчкой в программе, передавая ему подсветку.

При этом очень надо сбраcывать SynUni.Filename? А то приходится некрасивый код писать =)
Код

  s:= SynUni.FileName;
  if TSynUniDesigner.EditHighlighter(SynUni, 'Syntax Designer', '') then
  SynUni.SaveToFile(s);
  SynUni.FileName:=s;
 
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Vit
Дата 5.7.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Вот письмо пришедшее от одного из пользователей. Он наверняка использует старую версию, но тем ни менее следует тщательно проверить код и заменить все функции UpperCase/LowerCase на соответствующие ANSI

Цитата

 need to change SynUni (Uni Highlighter for SynEdit) to work with a Greek
programming language (taught at highschool in Greece) and it seems it only
supports English when selecting to use ignore-case

I suggest the following change (see //Birb: comment), not sure though at
which Delphi version the AnsiUpperCase function was introduced.

----------

procedure TSynRange.SetCaseSensitive(const Value: boolean);
begin
FCaseSensitive:=Value;
if not Value then
begin
   CaseFunct:=UpCase;
   StringCaseFunct:=AnsiUpperCase; //Birb: not using UpperCase cause it's
only for English
end
else
begin
   CaseFunct:=CaseNone;
   StringCaseFunct:=StringCaseNone;
end;
end;

------------------

Anyway, I may need to write my own function for ignoring punctuation marks
too at comparisons, so instead of having to change SetCaseSensitive to point
to my routine it would be best I think to have some way to callback a user's
event handler from the TSynUni component and either

* pass them either two strings to compare and have an "out" boolean param
for the result (or "var" param for old Delphi versions),

* or pass them a var param with the string value to make uppercase, in which
case they could make it uppercase in a special way that removes punctution
marks, so that both punctuated and unpunctuated strings compare the same

Cheers,
George

P.S. btw, are you interested for feedback regarding UniEdit bugs/problems?
It's a very useful tool but has various GUI issues


  


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Quadr0
Дата 6.7.2006, 00:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 11:30
  Вверх
Vit
Дата 6.7.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Цитата(Quadr0 @  5.7.2006,  15:39 Найти цитируемый пост)
UpperCase и AnsiUpperCase - суть почти одно и то же. Как он собрался запихнуть греческий алфавит под стандарты ANSI? Тут нужен WideUpperCase, раз уж на то пошло. В любом случае, компонент нужно переписывать для использования с ЮНИКОД'ом, чем я собсно и потихоньку занимаюсь.  



Нет не одно и то же. Опустим юникоды. Просто однобайтовые кодировки. Байты соответствующие русским А и а будут считаться эквивалентными если не Casesensitive при русской кодировке, но не факт что соответствующие им байты при греческой кодировке попадут на прописную и строчную альфы... В общем проблема известна и стара как мир, действительно надо все строковые функции заменить на соответствующие Ansi варианты там где они есть. 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vitalik
Дата 8.7.2006, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Всё, я вернулся  smile 

Цитата(miksayer @  3.7.2006,  23:19 Найти цитируемый пост)
а будет ли версия для 2006-ых Делфи и Билдера?  

Если я их себе поставлю, то, возможно, будет smile
А может найдется человек с уже устанновленой такой делфей и поможет smile

Цитата(Sep. @  4.7.2006,  12:56 Найти цитируемый пост)
Не могу найти как доступ к ним получать =( Может кто знает?

Для этого используется метод SynEdit'а GetHighlighterAttriAtRowCol:
Код
var
  Token: string;
  Attri: TSynHighlighterAttributes;
begin
  SynEdit1.GetHighlighterAttriAtRowCol(SynEdit1.CaretXY, Token, Attri);
Он возвращает в Attri "атрибут" текущего текста, а по атрибуту можно узнать его имя. 
Сейчас в качестве имени атрибута просто задается имя правила, но можно придумать что-нибудь по-хитрее smile
Простейший пример использования этого дела вкладываю в сообщение smile

Цитата(Sep. @  4.7.2006,  12:56 Найти цитируемый пост)
При этом очень надо сбраcывать SynUni.Filename? А то приходится некрасивый код писать =)

Действительно оплошность smile
Спасибо, обязательно добавлю при сохранении в родном формате изменение свойства FileName smile

Цитата(Vit @  6.7.2006,  14:28 Найти цитируемый пост)
действительно надо все строковые функции заменить на соответствующие Ansi варианты там где они есть.

Оки, не вопрос, сделаем smile
Вот только как быть с простым UpCase (для одного символа), для него нет соответствующей функции Ansi... 
"Формировать" из одного символа строку и посылать ее функции AnsiUpperCase?

Цитата(George (by Vit) @  5.7.2006,  17:56 Найти цитируемый пост)
Anyway, I may need to write my own function for ignoring punctuation marks
too at comparisons, so instead of having to change SetCaseSensitive to point
to my routine it would be best I think to have some way to callback a user's
event handler from the TSynUni component and either

* pass them either two strings to compare and have an "out" boolean param
for the result (or "var" param for old Delphi versions),

* or pass them a var param with the string value to make uppercase, in which
case they could make it uppercase in a special way that removes punctution
marks, so that both punctuated and unpunctuated strings compare the same

Довольно смутно понял, что он здесь имел в виду.. smile
Но по ходу типа возможность игнорирования не только регистра (верхний/нижний) у токена путем преобразования всех токенов к верхнему регистру, но и произвольное превращения токена для "объединения" каких-то схожих токенов (отличающихся не только по регистру)..
Вот только пунктуация ведь все равно будет разбивать токены на части, а поэтому вряд ли это может его проблеме.. Очень бы хотелось узнать для чего ему это именно нужно, хотя бы примерчик какой-нить smile Тогда можно было бы думать дальше smile

Цитата(George (by Vit) @  5.7.2006,  17:56 Найти цитируемый пост)
P.S. btw, are you interested for feedback regarding UniEdit bugs/problems?
It's a very useful tool but has various GUI issues

А давно он тебе писал? smile
Передай ему, что мы очень даже заинтересованы в "обратной связи" и пригласи, если не сложно, на англиЦкий форум по компоненту smile
Кстати, Vit, а может лучше здесь устроить подфорум для наших англоязычных коллег? Это было бы очень удобно! smile


P.S. А вот файлик для Sep'а:  

Это сообщение отредактировал(а) Vitalik - 8.7.2006, 08:29

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  GetAttributeNameNew.zip 2,12 Kb
PM MAIL WWW ICQ YIM   Вверх
navykeds
Дата 8.7.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.3.2006

Репутация: 3
Всего: 3



Цитата(Vitalik @  8.7.2006,  08:29 Найти цитируемый пост)
Если я их себе поставлю, то, возможно, будет А может найдется человек с уже устанновленой такой делфей и поможет 


На самом деле под 2006 версию все нормально устанавливается. Просто использую пакет для D7.

Цитата(Vitalik @  8.7.2006,  08:29 Найти цитируемый пост)
Оки, не вопрос, сделаем 
Вот только как быть с простым UpCase (для одного символа), для него нет соответствующей функции Ansi... 
"Формировать" из одного символа строку и посылать ее функции AnsiUpperCase?


Так и делается smile 
PM MAIL   Вверх
admhome
Дата 10.7.2006, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 10.7.2006
Где: заМКАДье

Репутация: нет
Всего: нет



Может я конечно чего-то недогоняю, НО: устанавливаю SynEdit-2.0.3, процесс проходит нормально. Далее unihighlighter 2.0b1. Оно сперва требует SynEditCodeFolding, слили из Mystix031Src. Потом сие чудо выдало:

[Hint] SynUniFormat.pas(44): Value assigned to 'TSynUniFormat.VerifyStream' never used
[Hint] SynUniFormat.pas(54): Value assigned to 'TSynUniFormat.VerifyFileName' never used
[Hint] SynUniFormat.pas(64): Value assigned to 'TSynUniFormat.VerifyEmptyFileName' never used
[Warning] SynUniFormat.pas(71): Return value of function 'TSynUniFormat.ImportFromStream' might be undefined
[Warning] SynUniFormat.pas(75): Return value of function 'TSynUniFormat.ImportFromFile' might be undefined
[Warning] SynUniFormat.pas(79): Return value of function 'TSynUniFormat.ExportToStream' might be undefined
[Warning] SynUniFormat.pas(83): Return value of function 'TSynUniFormat.ExportToFile' might be undefined
[Error] SynUniFormatNativeXml20.pas(537): Undeclared identifier: 'FoldRegions'
[Error] SynUniFormatNativeXml20.pas(557): Undeclared identifier: 'FoldRegions'
[Fatal Error] SynUniHighlighter.pas(120): Could not compile used unit 'SynUniFormatNativeXml20'


Подскажите плиз, как бороться с этим явлением?

P.S.: Delphi 7 
PM MAIL WWW ICQ   Вверх
navykeds
Дата 10.7.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.3.2006

Репутация: 3
Всего: 3



Нужно в файле SynUni\Source\SynUniHighlighter.inc 
заменить строку {$DEFINE CODEFOLDING} на {.$DEFINE CODEFOLDING}.
Эта директива используется, если у тебя установлен пакет с codefolding. 
PM MAIL   Вверх
Vitalik
Дата 10.7.2006, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Спасибо, navykedsuser posted image

Я могу лишь добавить:

Цитата(Vitalik @  3.7.2006,  15:26 Найти цитируемый пост)
Информацию по установке компонента желательно прочитать здесь: www.unihighlighter.com/index.php?showpage=install

smile 
PM MAIL WWW ICQ YIM   Вверх
miksayer
Дата 16.7.2006, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.11.2004

Репутация: нет
Всего: 1



Цитата(navykeds @  8.7.2006,  14:45 Найти цитируемый пост)
На самом деле под 2006 версию все нормально устанавливается. Просто использую пакет для D7.

а для билдера как быть? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема »


 




[ Время генерации скрипта: 0.0888 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.