Вверх ↑
Этот топик читают: Гость
Ответов: 1303
Рейтинг: 405
#31: 2016-06-24 21:41:44 ЛС | профиль | цитата
Добавил подсветку парных фигурных скобок, несогласованных фигурных скобок.
scintilla_mav_2.zip
Пытался оживить onChange, но пока безуспешно. ScintillaEvents отлавливает сообщение SCN_MODIFIED, но как это дело связать с Control.OnChange .
зы; c API scintilla гораздо проще разобраться чем с кубикостроением .
карма: 3

0
Гость
Ответов: 17029
Рейтинг: 0
#32: 2016-06-24 22:25:21 правка | ЛС | профиль | цитата


Редактировалось 9 раз(а), последний 2021-06-21 03:55:46
карма: 0

0
Ответов: 4744
Рейтинг: 530
#33: 2016-06-25 05:40:24 ЛС | профиль | цитата
MAV писал(а):
Пытался оживить onChange, но пока безуспешно.

MAV, мне кажется достаточно перенаправить сообщение в процедуре THIScintilla.ScintillaEvents через SendMessage(Control.Handle далее смотри win.pas что он ловит и меняем на эту мессагу .

p.s Вроде сам так хотел делать но забыл уже
карма: 6
0
Ответов: 1841
Рейтинг: 123
#34: 2016-06-25 12:23:21 ЛС | профиль | цитата
г. Ном писал(а):
на предмет улучшения его поддержки в Forth системе Win32Forth

Для общей картины, можно посмотреть примеры подключения Scintilla в SP-Forth.
В каком-от из примеров есть автозавершение.

[flood]Закончил строительные работы. [/flood]
Хочу тоже приложить руку к Scintilla, но прежде, хотелось-бы оговорить коллеги, что и как делаем.
1. Делаем с dll, или без?
2. Какие свойства и точки выводим?
2.1 (свойство) цвет шрифта и цвет фона - (точки не выводим)
2.2 (свойство) цвет нумирации строк и цвет фона + (точка включения\отключения режима)
2.3 (свойство) цвет выделения (шрифт и фон) - (точку не выводим)
2.4 (свойство) цвет текущей строки - (точку не выводим)
2.5 (точка и свойство) перенос по словам. (или только свойство?)
2.6 (точка) автозавершение вкл\откл
2.7 (точка) поиск + (точка вкл\откл регистр?)
2.8 (точка) поиск-замена
По ходу пьесы, чего-то обязательно будет всплывать...
Если будем пользоваться одной болванкой, то можно будет без труда всё свести в одну кучу.
andrestudio подрихтует (но надо постараться нам, чтобы из телодвижений было только - одобрямс) и получится - конфетка.




карма: 5

0
Ответов: 4744
Рейтинг: 530
#35: 2016-06-25 15:21:59 ЛС | профиль | цитата
flint2, привет

flint2 писал(а):
andrestudio подрихтует

Не ребята я пас Я В ОТПУСКЕ!!!

MAV, я тут тоже попытался оживить (хотя сам чуть живой )
Но в документацию не лез хотя пологаю что SCN_MODIFIED соответствует действительности но не как onChange hiscintilla.zip
Дальше можно по аналогии
карма: 6
1
файлы: 1hiscintilla.zip [5.8KB] [341]
Голосовали:MAV
Ответов: 1841
Рейтинг: 123
#36: 2016-06-25 19:32:50 ЛС | профиль | цитата
andrestudio, привет
andrestudio писал(а):
тут начальство хоТит меня отпуска лишить и я очень злой, пока отПисками занимаюсь

Злые и не благодарные люди!

[flood]С кем вообще затеяли отПисками меряться?![/flood]
andrestudio писал(а):
а отпуск только в конце июня

andrestudio писал(а):
Не ребята я пас Я В ОТПУСКЕ!!!

Мужик сказал, мужик сделал!
Приятного отпуска!!!
[flood]В отпуске - не бери тяжелей стакана в руки, а дурного в голову! Но после отпуска...[/flood]

MAV писал(а):
c API scintilla гораздо проще разобраться чем с кубикостроением

Согласен, куда гораздей просто писать - и руки развязаны, и компактней, и много чего...
Excusez-moi!
Мы должны приносить людям пользу! (...из кинофильма Его звали Роберт)
------------ Дoбавленo в 19.32:
Поскольку на все случаи жизни соломку не подстелить (по причине - глупо выводить точки на каждый чих), то предлагаю убрать множество (все не получится) точек.
Начальные установки - несколько свойств, всё-таки нужны. (не точки)
Поставить одну большую, жирную точку, которая парсит входной поток и либо пересылает команду Лексеру, либо чего-то сама копошится и оказывая знаки внимания Лексеру выводит их продукт любви в правую часть.
Подобно чтению списка стиля редактора и подсветки синтаксиса, только по одной команде или скрипту из потока.
Все команды состоящие на службе Лексера - писать без изменения(для прозрачности), а новые, где присутствует алгоритм, или задействовано несколько команд Лексера, - где-то надо описывать по мере их появления. Имеется ввиду комментировать.
case
...;
и постепенно пишем, кто во что гаразд;
...;
Только добавляя в ini выходные точки, при необходимости.
карма: 5

0
Ответов: 1303
Рейтинг: 405
#37: 2016-06-26 00:28:30 ЛС | профиль | цитата
andrestudio, спасибо за помощь.
andrestudio писал(а):
SCN_MODIFIED соответствует действительности но не как onChange
если бы SCN_MODIFIED не троил (три события на выходе) , можно бы было приспособить данное событие для организации onChange. Ну думаю завтра будет время разберусь.
flint2, из означенных организационных вопросов, я бы оставил dll, тем более её можно использовать в комерческих проектах. Почему именно dll, потому что библиотека обновляется и есть возможность задействовать новые функции + устраняются баги, а так придётся постоянно пересобирать дополнительный модуль.
Насчёт излишества точек, вопрос спорный - сможет ли рядовой пользователь разобраться в куче параметров которые надо передать в потоке. Минимальный набор думаю нужен. Да и пока функционала у нас маловато что бы думать об избытке точек . Кстати с фолдингом пока ни как одни рунтаймы.
карма: 3

0
Ответов: 1841
Рейтинг: 123
#38: 2016-06-26 12:10:32 ЛС | профиль | цитата
MAV, спасибо, всё понял.

карма: 5

0
Ответов: 1303
Рейтинг: 405
#39: 2016-06-26 14:32:04 ЛС | профиль | цитата
MAV писал(а):
из означенных организационных вопросов, я бы оставил dll, тем более её можно использовать в комерческих проектах. Почему именно dll, потому что библиотека обновляется и есть возможность задействовать новые функции + устраняются баги, а так придётся постоянно пересобирать дополнительный модуль

Это с одной стороны, а с другой очередной баян, "у мяня пышет нет dll".
flint2 писал(а):
Поставить одну большую, жирную точку, которая парсит входной поток и либо пересылает команду Лексеру, либо чего-то сама копошится и оказывая знаки внимания Лексеру выводит их продукт любви в правую часть.Подобно чтению списка стиля редактора и подсветки синтаксиса, только по одной команде или скрипту из потока.

Можно кстати расширить уже существующий парсер и загнать туда все цветовые параметры и настройки.

После помощи andrestudio активировал onChange, и ещё ряд незначительных правок и изменений, убрал точку метода doBraceLight за ненадобностью.
далее посмотреть в архиве.
scintilla_mav_3.zip

карма: 3

0
Ответов: 1841
Рейтинг: 123
#40: 2016-06-26 15:27:25 ЛС | профиль | цитата
MAV писал(а):
Можно кстати расширить уже существующий парсер и загнать туда все цветовые параметры и настройки.

Я почти так и хотел потом сделать, но пока не дошел до этого. Пока пробую разные варианты - как удобней.
Вообще мысль такая была - сделать такую точку параллельно остальным точкам, чтобы была возможность сделать какие-то настройки, которые не реализованы в компоненте.
далее посмотреть в архиве.
scintilla_mav_3.zip
Хорошо. Возьму за основу.
MAV писал(а):
"у мяня пышет нет dll"

В каком смысле?
Вроде всё нормально в твоих всех вариантах.
Может чехарда с директориями?
[flood]Совершенно невозможно ничего делать!
33 градуса в тени!
Хоть-бы дождик прошел. [/flood]
карма: 5

0
Ответов: 1303
Рейтинг: 405
#41: 2016-06-26 17:19:26 ЛС | профиль | цитата
flint2 писал(а):
MAV писал(а) "у мяня пышет нет dll"В каком смысле?Вроде всё нормально в твоих всех вариантах.Может чехарда с директориями?

это я представил по аналогии с bass.dll, каждый второй плеерописатель спрашивает почему у меня не работает плеер .
В параметрах элемента как то всё в кучу свалено, надо бы будет вынести AddType, ScrollBars, ReadOnly, UserPoupMenu к основным параметрам а Options разделить на параметры стиля(подсветки), параметры автозавершения, и тд.
[flood]да жарковато у вас, у нас в тени +32 , только зашёл с улицы, чуть фолдинг мозга не наступил от жары[/flood]
карма: 3

0
Ответов: 1841
Рейтинг: 123
#42: 2016-06-26 19:29:36 ЛС | профиль | цитата
MAV писал(а):
каждый второй плеерописатель спрашивает почему у меня не работает плеер

Понял

MAV писал(а):
В параметрах элемента как то всё в кучу свалено, надо бы будет вынести...

Этим и занимаюсь.
[flood]
да жарковато у вас, у нас в тени +32 , только зашёл с улицы, чуть фолдинг мозга не наступил от жары

Я вообще ничего не могу делать. Даже приготовить ничего не могу. Сижу на сигаретах и квасе из холодильника. Вечером займусь. Выложу только завтра наверное.
[/flood]

карма: 5

0
Ответов: 1303
Рейтинг: 405
#43: 2016-06-27 22:08:34 ЛС | профиль | цитата
flint2, во время борьбы с фолдингом нашёл полезную настройку, визуализацию отступов линией, можно думаю добавить.
#pas
// визуальная линия интервала отступа, 4 оптимально MAV
CP(SCI_SETINDENT, 4, 0);
// включить, отключить визуализацию линии
CP(SCI_SETINDENTATIONGUIDES, 1, 0);
setindent_.png
правда ещё не искал цветовые настройки для линии, но думаю где то они есть .
Теперь о компиляторе D4, он меня просто вымораживает
без этой строчки фолдинга не будет .
#pas
CP(SCI_SETPROPERTY, LongInt(PChar('fold')), LongInt(PChar('1')));
компиляция без проблем, но во время выполнения рунтайм 216, хоть убейся.
строчку вставляем в Init с вот таким прицепом,чтобы что то увидеть активируем нужные поля
#pas
// Margins
// number margin
CP(SCI_SetMarginTypen,0, SC_MARGIN_NUMBER);
CP(SCI_SetMarginWidthN,0, 36);
// sep
CP(SCI_SetMarginTypen,1, SC_MARGIN_SYMBOL) ;
CP(SCI_SetMarginWidthN,1, 12);
// folding margin
CP(SCI_SetMarginMaskN, 2, SC_MASK_FOLDERS);
CP(SCI_SetMarginWidthN,2, 18);
CP(SCI_SetMarginSensitiveN,2, 1);

CP(SCI_SETFOLDFLAGS, 16, 0);
CP(SCI_SETPROPERTY, LongInt(PChar('fold')), LongInt(PChar('1')));
Вот строчки из врапера, реализация процедуры SetProperty
#pas
procedure TScintilla.SetProperty(key : PChar; value : PChar);
begin
SPerform(SCI_SETPROPERTY, LongInt(key), LongInt(value));
end;
//соответственно вызов процедуры
SetProperty('fold', '1');
Ну что ещё не так?
Скомпилировать удалось на пакете FPC2(компилятор 2.6.4), без всяких проблем.
[flood]Эх, так и хочется соскочить на FPC тем более что системные библиотеки там подключены. Ладно не буду злобно и воинственно проповедовать антинаучный образ мыслей посмотрю лучше кино для успокоения нервов.[/flood]


карма: 3

0
файлы: 1setindent_.png [27.3KB] [649]
Ответов: 1841
Рейтинг: 123
#44: 2016-06-27 23:34:04 ЛС | профиль | цитата
MAV, я тоже замучился.
Ну что ещё не так?

Завтра посмотрю на свежую голову. Сегодня выдохся.
Сегодня с ini боролся. Чтобы красиво всё было, пришлось совсем чуть-чуть WinControl.ini переделать - назвал WinControlS.ini
MAV
Подскажи пожалуйста, как установить цвет шрифта и задний фон шрифта? (SCI_STYLESETFORE и SCI_STYLESETBACK) Т.е. всего! сейчас у меня получается отдельно, либо буквы, либо знаки, либо цифры.
Сегодня без особых усилий получилось, но затёр в ходе экспериментов.

CP(SCI_STYLESETBACK, STYLE_DEFAULT,Integer( _prop_Color)); //глобальный задний фон
CP(SCI_STYLESETBACK, 0,Integer( _prop_Color)); //знаки и пробелы
CP(SCI_STYLESETBACK, 1,Integer( _prop_Color)); // буквы
А цифры как?


карма: 5

0
Ответов: 1303
Рейтинг: 405
#45: 2016-06-28 16:49:59 ЛС | профиль | цитата
flint2, вкратце моё понимание всей всей цветовой кухни Синтилии. Есть лексический анализатор с его помощью разбирается код на запчасти и определяет поведением подсветки, то-есть чтобы подсветить код на Паскале мы должны выбрать синтаксис с которым будем работать.
#pas
CP(SCI_SETLEXER, SCLEX_PASCAL, 0);
теперь нам доступны предустановленные наборы лексических правил, смотрим к примеру в DScintillaTypes.pas врапер DScintillar75
#pas
/// <summary>Lexical states for SCLEX_PASCAL</summary>
SCE_PAS_DEFAULT = 0;
SCE_PAS_IDENTIFIER = 1;
SCE_PAS_COMMENT = 2;
SCE_PAS_COMMENT2 = 3;
SCE_PAS_COMMENTLINE = 4;
SCE_PAS_PREPROCESSOR = 5;
SCE_PAS_PREPROCESSOR2 = 6;
SCE_PAS_NUMBER = 7;
SCE_PAS_HEXNUMBER = 8;
SCE_PAS_WORD = 9;
SCE_PAS_STRING = 10;
SCE_PAS_STRINGEOL = 11;
SCE_PAS_CHARACTER = 12;
SCE_PAS_OPERATOR = 13;
SCE_PAS_ASM = 14;
видим нумерацию как у нас в парсере, кстати для других языков парсер придётся переделывать, нумерация для разных языков отличается.
соответственно мы можем каждый параметр настроить конкретно под себя. Пример настройки для цифр
#pas
CP(SCI_STYLESETBOLD, SCE_PAS_NUMBER, 1);
CP(SCI_STYLESETFONT, SCE_PAS_NUMBER, longint(PChar(_prop_Font.Name)));
CP(SCI_STYLESETSIZE, SCE_PAS_NUMBER, _prop_Font.size);
//или вместо SCE_PAS_NUMBER ставим 7
Есть ещё стили 255 штук, по сути наборы параметров таких как примеру глобальный задний фон, не подсвеченный текст шрифт, размер и тд., цвет выделения текста и тд. Все стили можно настроить под себя кроме зарезервированных с 33 по 39, кстати зарезервированный стиль 34, 35 я использовал для скобок. Вывод, все параметры надо загонять в один стиль к примеру в STYLE_DEFAULT(32), потом этот набор можно использовать для разных языков.
пример настроек лексера на пуребасике
code_37417.txt

карма: 3

0
файлы: 1code_37417.txt [5.1KB] [516]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)