Macro { description="Ensure the selected match is visible";
area="Editor"; key="ShiftF7 AltF7";
uid="69F94982-26F1-4acc-8088-03BDD63A4193";
action=function()
Keys'AKey'
if not Area.Dialog then -- Dialog means "Not found"
gotoBlockBorder"B"
gotoBlockBorder"K"
end;
end
}
, чтобы избежать ситуации, когда найденное в редакторе стандартным поиском вхождение показывается целиком за экраном.
Да, этот макрос по смыслу никак не связан с Turbo, зато удачно использует его инфраструктуру (код) — дёшево и сердито.
turbo — работа с выделением в редакторе
Posted: Fri 27 Apr, 2018 01:39
by buniak_a_h
John Doe, в макросе Ctrl-K-blocks.lua ошибка в 248-й строке:
AKey:gsub("K-","Shift")
надо заменить на
AKey:gsub("K%-","Shift")
Поясню. "K-" здесь - это шаблон; в нём символ "-" - элемент шаблона:
Описание языка wrote:Одиночный символьный класс, сопровождаемый '-', что также соответствует 0 или большему количеству повторений символов из заданного класса. В отличие от *, элементы повторения будут всегда соответствовать самой короткой возможной последовательности;
Т.е. его надо экранировать символом "%".
Если не верите, введите строку: lua:=('CtrlK-1'):gsub('K-','Shift',1)
В ответ получите кошмарик: ShiftCShifttShiftrShiftlShiftKShift-Shift1Shift
Извините, если что...
и не работает прекращение подсчёта по Esc и CtrlQ. Предлагаю этот макрос или починить, или по умолчанию не назначать в область Shell (задокументировав эффект предупреждением в комментарии).
Хуже всего, что при этом даже не выводится окно с прогрессом подсчёта, и кажется будто фар завис.
Проблема описана давно: 0002692: Невозможно прервать операцию, если она запущена из макроса. Уже пытались фиксить в лоб, но всё оказалось не просто, и откатили (кажется синхронность действий нарушалась: макрос не дожидался окончания подсчёта). Ссылку на обсуждение сходу не нашёл.
Исправить на уровне макроса проблематично: это надо делать на уровне MacroEx, а архитектура там такова, что глобальный обработчик CtrlQ выполняется в любом случае, а при отсутствии дополнительных действий перевызывает Keys "CtrlQ", что и вызывает нежелательные эффекты.