OberonCore
https://forum.oberoncore.ru/

i21sys
https://forum.oberoncore.ru/viewtopic.php?f=90&t=3367
Страница 1 из 1

Автор:  Евгений Темиргалеев [ Среда, 30 Март, 2011 16:17 ]
Заголовок сообщения:  i21sys

http://oberoncore.ru/bbcc/subs/i21sys/

См. также:
* i21sysCalls
* i21sysDesktop - охранялка конфигурации окон
* viewtopic.php?t=5397 (i21sysIn)

Автор:  Евгений Темиргалеев [ Четверг, 31 Март, 2011 17:52 ]
Заголовок сообщения:  Re: i21sys

Включил i21sysEdit.

Кого F5 интересует --- просьба проверить (лишний раз не помешает) и отписаться.

Автор:  Пётр Кушнир [ Четверг, 31 Март, 2011 18:36 ]
Заголовок сообщения:  Re: i21sys

работает вроде.
а зачем нужно Edit.Init? куда его втыкать надо(надо ли)?

Автор:  Евгений Темиргалеев [ Четверг, 31 Март, 2011 20:19 ]
Заголовок сообщения:  Re: i21sys

Пётр Кушнир писал(а):
а зачем нужно Edit.Init? куда его втыкать надо(надо ли)?
Вызов Init стоит при загрузке модуля. Что она экспортирована, я вообще не обратил внимания... Подождём, что автор скажет.

Автор:  Info21 [ Четверг, 31 Март, 2011 20:46 ]
Заголовок сообщения:  Re: i21sys

Евгений Темиргалеев писал(а):
Пётр Кушнир писал(а):
а зачем нужно Edit.Init? куда его втыкать надо(надо ли)?
Вызов Init стоит при загрузке модуля. Что она экспортирована, я вообще не обратил внимания... Подождём, что автор скажет.

Не надо втыкать.
Это чтобы переопределять язык. Нужно было при разработке. Пусть торчит.

( Вот ведь забавно как: раз торчит -- так сразу хочется дернуть :) )

Автор:  Евгений Темиргалеев [ Суббота, 02 Апрель, 2011 13:28 ]
Заголовок сообщения:  Re: i21sys

Включил i21sysDesktop.

Автор:  Евгений Темиргалеев [ Вторник, 11 Октябрь, 2011 12:04 ]
Заголовок сообщения:  Re: i21sys

Выложены поправленные архивы: в списке упаковки были пропущены словари от i21sysEdit, поэтому он работал лишь отчасти (обнаружил Борис Рюмшин).

Автор:  Евгений Темиргалеев [ Воскресенье, 11 Декабрь, 2011 16:38 ]
Заголовок сообщения:  Re: i21sys

i21sysIn добавил (по сравнению со стандартным In) возможность использования в качестве входного потока текста, "выделенного" маркерами-коммандерами.

Уже давно использую исключительно "выделение" коммандерами. Иногда бывают затыки --- осталось выделение выше по тексту (или нечаянно ткнул), и никак не поймешь, глядя на текст после коммандера, почему процедура не даёт результатов, соответствующих входным данным.

Вопрос использующим In --- как часто применяете в качестве входного потока весь активный текст или выделенный в нём кусок?

Автор:  Info21 [ Воскресенье, 11 Декабрь, 2011 21:31 ]
Заголовок сообщения:  Re: i21sys

Евгений Темиргалеев писал(а):
Вопрос использующим In --- как часто применяете в качестве входного потока весь активный текст или выделенный в нём кусок?
Выделенный кусок -- постоянно.

А весь текст -- пока не встретилось.
Видимо, надо отменить эту возможность -- как раз в новой версии школьных сборок можно это сделать.

Автор:  Евгений Темиргалеев [ Понедельник, 30 Январь, 2012 10:45 ]
Заголовок сообщения:  Re: i21sys

Может стоит добавить процедуру открытия с явным указанием потока(ов)? Вроде
PROCEDURE OpenThis (stream: INTEGER) или PROCEDURE OpenThis (streams: SET)

Тогда можно было бы открывать только текст из параметра коммандера, независимо от наличия выделения.

Автор:  Info21 [ Понедельник, 30 Январь, 2012 15:10 ]
Заголовок сообщения:  Re: i21sys

Евгений Темиргалеев писал(а):
Может стоит добавить процедуру открытия с явным указанием потока(ов)? Вроде
PROCEDURE OpenThis (stream: INTEGER) или PROCEDURE OpenThis (streams: SET)

Тогда можно было бы открывать только текст из параметра коммандера, независимо от наличия выделения.
Мысли у нас сошлись в почти одной точке.
Только у меня проще:
PROCEDURE Open; -- поток ввода после коммандера. (*видимо*)
PROCEDURE OpenSelection; -- поток ввода = выделению.
(Ну, и для полноты счастья ввести булевский распознаватель наличия выделения.)

В учебных целях используется один способ: фиксация выделения в качестве потока ввода через меню|горячую клавишу, а в программе -- Restart.
Это потому, что в паскалеобразных программах нет коммандера,
а в школьном контексте лучше выбрать один способ, и придерживаться его.

Автор:  Евгений Темиргалеев [ Вторник, 29 Май, 2012 11:04 ]
Заголовок сообщения:  Re: i21sys

Внёс поправку viewtopic.php?p=72676#p72676

Автор:  Евгений Темиргалеев [ Вторник, 11 Март, 2014 14:19 ]
Заголовок сообщения:  Re: i21sys

Загружаю версию из сборки 09.11.2012.

i21sysScanner (под wine) не читал словари. Проблема в избыточной "/"
Код:
   CONST  path0 = "i21sys/Rsrc/";

Автор:  Евгений Темиргалеев [ Вторник, 11 Март, 2014 15:28 ]
Заголовок сообщения:  Re: i21sys

i21sysIn, документация i21sysDesktop, и компонент i21sysEdit обновлены по базовой сборке 09.11.2012 и включена дополнительная документация.

На оригинальном ББ ссылки с юникодными литерами работать не будут (viewtopic.php?t=3971).

Автор:  Илья Ермаков [ Суббота, 22 Март, 2014 02:31 ]
Заголовок сообщения:  i21sys F5 неправильно работает из-за TextMappers.Get

В сборке OberonCore есть фикс внутренней процедуры TextMappers.Get (видимо, не соответствовала спецификации модуля):

Код:
   PROCEDURE Get (VAR s: Scanner; OUT ch: CHAR);
   BEGIN
      s.rider.ReadChar(ch);
      IF ({returnViews, maskViews} * s.opts = {returnViews}) & (s.rider.view # NIL) THEN
         ch := VIEW; s.rider.char := VIEW
      END
   END Get;


В оригинале эта процедура выглядела:
Код:
   PROCEDURE Get (VAR s: Scanner; OUT ch: CHAR);
   BEGIN
      s.rider.ReadChar(ch);
   END Get;


Короче говоря, при этом исправлении перестаёт правильно работать автодополнение i21sys.
m F5 даёт MAX, а не конструкцию MODULE.
p F5 даёт POINTER, а не PROCEDURE...
и т. д.

Видимо, тот случай, когда старые ошибки уже стали не багом, а фичами - и исправление влияет на работоспособность уже существующего клиентского кода...

Автор:  Евгений Темиргалеев [ Суббота, 22 Март, 2014 13:41 ]
Заголовок сообщения:  Re: i21sys F5 неправильно работает из-за TextMappers.Get

Причина: не читаются подсказки i21sys/Rsrc/hints.
i21sysScanner Docu писал(а):
Любая вьюшка означает конец словаря (обычно это вьюшка DevCommanders.EndView, которая вставляется посредством Shift+Ctrl+Q).
Первая вьюшка в тексте --- невидимая --- линейка, которая маскируется литерой TextMappers.para. Но вьюшкой от этого быть не перестаёт. Она и означает конец словаря при наличии исправления B23 (viewtopic.php?t=4353), в описании которого ситуация разобрана подробно.

Можно просто прибавить ниже опцию TextMapper.maskViews и всё заработает; либо определять конец словаря более точно, например, "любая вьюшка кроме линейки".
Код:
PROCEDURE Open* ( path: ARRAY OF CHAR;  name: Files.Name ); (* path relative to path0 *)
      VAR  loc: Files.Locator;  i: INTEGER;  fullName: Files.Name;
         conv: Converters.Converter;  v: Views.View;
   BEGIN
      ...
      sc.ConnectTo( v( TextViews.View ).ThisModel() );
      sc.SetOpts( { TextMappers.returnViews } ); (* используем вьюшку для отметки конца списка, поэтому хотим, чтобы sc ее не игнорировал, тогда мы тут засечем ее *)
      ...
   END Open;

Автор:  Евгений Темиргалеев [ Воскресенье, 23 Март, 2014 15:42 ]
Заголовок сообщения:  Re: i21sys

Внёс поправку (архив обновлён)
Код:
sc.SetOpts( { TextMappers.returnViews, TextMappers.maskViews } );

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/