Saferoll писал(а):
Изменением маркеров мы устраним проблему с маркерами, но останется проблема со вставкой коммандеров, картинок и прочего. А также с изменением атрибутов текста.
Да дело в том, что (с копированием и вырезанием) глючит, похоже, модуль ColorViews. Строго говоря, этот модуль не входит в подсистему Master, он даже другого автора (Trurl). И он реализует автораскраску только чисто текстовых исходников, так что о коммандерах, картинках и ручном изменении атрибутов речь здесь не идёт (модули *.Mod и открываются из текстового файла, и записываются в него, поэтому в лучшем случае нетекстовые элементы просто будут потеряны).
Другое дело встроенные в Master автором (С.Губановым) средства раскраски. Чтобы испытать их на вкус — открываем *.odc модуль и выбираем в меню:
Мастер -> Включить автораскраску в текущем документеДля чистоты эксперимента внесём искусственно ошибку, компильнём это дело Ofront'ом (для вставки "неправильного" маркера?) и сразу же попытаемся вырезать часть ключевого слова. Как и следовало ожидать, проблем нет.
Так что подсистема Мастер сейчас не очень единообразная (я её собрал из авторского кода Губанова и предложенного Трурлем модуля для раскраски текстовых исходников) и несёт в себе несколько подходов, важное уточнение заключается в том, что открывая модуль *.Mod из текстового файла — мы запускаем автоподсветку, реализованную Трурлем в модуле MasterColorViews на базе кода Губанова:
[ XDev/System/Mod/Config.odc ]
Код: "OBERON"
Converters.Register("MasterColorViews.ImportText", "MasterColorViews.ExportText", "MasterColorViews.View", "mod", {Converters.importAll});
Converters.Register("MasterColorViews.ImportText", "MasterColorViews.ExportText", "MasterColorViews.View", "def", {Converters.importAll});
А когда мы открываем нетекстовый (бинарный) исходник *.odc — механизмы MasterColorViews неактивны. Но мы можем здесь включить автораскраску в текущем документе:
[ XDev/Master/Rsrc/Menus.odc ]
"Включить автораскраску в текущем документе" "" "MasterViews.Wrap" "MasterViews.WrapFocusGuard"Либо же запустить службу раскраски:
"Запустить службу раскраски MASTER+" "" "MasterService.Start" "MasterService.StartFocusGuard"Служба MASTER+ понимает, что нужно раскрашивать не все подряд составные документы, поэтому помимо активации службы для включения раскраски требуется добрая воля пользователя — явная вставка в документ директивы (* MASTER+ *)
Так что, как мы видим, Мастер даёт нам не один механизм раскраски, а целых три. И к последним двум претензий нет, всё работает корректно (иначе я бы постарался достучаться к Сергею Губанову). А ошибка, похоже, в коде Трурля. Том, который в модуле MasterColorViews.
А вот ссылочка, откуда я поживился кодом Трурля (за что ему огромная спасиба):
http://www.hardforum.ru/t55803-2/#post398440P.S. Кстати, я заметил за Трурлевским кодом ещё глючок, связанный с попыткой напечатать текстовый документ *.Mod (с автораскраской) — лезет трап. Если скопировать текст и вставить в пустой документ (уже без автораскраски) — печатает. Будет желание поковырять эту ошибку — можно тестить на виртуальном принтере типа PDF Creator (чтобы не переводить бумагу).