Shmuel wrote: ↑Thu 08 Aug, 2019 21:37
В Far3 делается чуть сложнее: Keys("CtrlC") mf.sleep(100) Keys("Esc")
Не совсем понял, это начало строки кода или как?
В моём варианте (дополнил в предыдущий пост) что надо подправить? Каждую команду в кавычки поставить и перед ней Keys прописать?
Для пробы пока просто решил переделать весь код по указанному шаблону (без задержки)
Macro {
description="VHS 2 position";
area="Editor"; key="ShiftF7";
action=function()
Keys("CtrlTab ShiftF6 CtrlC Esc Down CtrlTab CtrlV CtrlBS BS Space Add Space CtrlTab ShiftF6 CtrlC Esc CtrlTab CtrlV CtrlBS BS Home CtrlDel F7 Add Enter Home F7 Space Add Enter Right Right Right CtrlDel Home ShiftEnd CtrlC End Enter CtrlV Home F7 Space Add Enter CtrlDel CtrlDel ShiftEnd ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft CtrlX Home CtrlV Space Add Space Down Down Home")
end;
}
Shmuel wrote: ↑Thu 08 Aug, 2019 21:58
Если вы хотите редактировать макросы для Фар3, то для начала перенесите этот файл из macros\internal в macros\scripts и замените его содержимое на:
Сделал так (хотя разницы в выполнении не заметил )
Shmuel wrote: ↑Thu 08 Aug, 2019 21:58
Не знаю, понятно ли объяснил.
Можно показать живой пример, встроив этот "задерживающий" код куда-нибудь в мой код? Я на этом примере тогда пойму как оно работает. Или просто надо вписать внутрь моего кода дополнительный блок вида
RoxMarty wrote: ↑Thu 08 Aug, 2019 22:06
разницы в выполнении не заметил
Этот перенос не для разницы в исполнении, а для удобства редактирования, чтобы не надо было перед двойными кавычками ставить бэкслэш.
RoxMarty wrote: ↑Thu 08 Aug, 2019 22:06
Можно показать живой пример
Вы разбиваете свою последовательность, которая представляет сейчас 1 вызов Keys() на несколько частей, каждая из которых - отдельный вызов Keys(). Между этими вызовами Keys() вставляете вызов mf.sleep().
Живой пример уже приводил, давайте ещё раз:
Вот пример прямо на вашем макросе, который я разрезал на 3 куска (разрезал в произвольных двух точках, а вы разрежете на другое число кусков, и не в произвольных точках, а там, где по-вашему нужно вставлять задержки):
Macro {
description="VHS 2 position";
area="Editor"; key="ShiftF7";
action=function()
Keys("CtrlTab ShiftF6 CtrlC Esc Down CtrlTab CtrlV CtrlBS BS Space Add Space CtrlTab ShiftF6 CtrlC")
mf.sleep(100)
Keys("Esc CtrlTab CtrlV CtrlBS BS Home CtrlDel F7 Add Enter Home F7 Space Add Enter Right Right Right")
mf.sleep(100)
Keys("CtrlDel Home ShiftEnd CtrlC End Enter CtrlV Home F7 Space Add Enter CtrlDel CtrlDel ShiftEnd ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft CtrlX Home CtrlV Space Add Space Down Down Home")
end;
}
с учётом этого стоит попробовать перед Keys вставить mf.clip(5,2) — если поможет, проблема в улучшаторах клипборда. если нет, нужно больше информации, имена файлов, что ожидаете получить, что получили и т.д. всё как написано здесь. потому как у меня всё работает.
zg wrote: ↑Thu 08 Aug, 2019 22:49
а только у меня Keys("Add") в редакторе вставляет нулевой символ? а так заменив в приведённом макросе Add на + — у меня всё работает ожидаемо.
Shmuel, Спасибо ещё раз! Код задержки работает и вроде пока проблем не возникало (разок из десяти правда всё же, но это лучше, чем было!). Налепил везде куда только можно, где это связано с копипастой или вызовом меню поиска в редакторе
Интересно только, я думал, что задержка покажется визуально в каждый конкретный свой запуск (чтоб отловить точно где её необходимо выставить, а где она не нужна), но на деле отображается только конечный результат. На досуге попробую быть может поэкспериментировать
zg wrote: ↑Thu 08 Aug, 2019 23:12
с учётом этого стоит попробовать перед Keys вставить mf.clip(5,2)
Попробовал подставить это значение в свой изначальный код (то есть без задержек вовсе) и... в 50 случаях из 50 всё идеально прошло!
Можно даже не отжимать хоткей теперь
Благодарю и за это!
P.S. В FAR 2 прописал (по аналогии с ранним примером к FAR 2) "clip(5,2)" перед первой командой секвенции и... теперь и тут всё решилось! Наверно сто строк отработало и ни сучка, ни задоринки
Last edited by RoxMarty on Thu 08 Aug, 2019 23:58, edited 1 time in total.
DrKnS wrote: ↑Thu 08 Aug, 2019 23:42
У меня, если я правильно помню, он завершался неудачей каждый раз, если до запуска теста в буфере лежало что-то нетекстовое.
Сейчас ещё раз поигрался - там закономерность несколько сложнее (или просто иная).
RoxMarty wrote: ↑Thu 08 Aug, 2019 23:47
я думал, что задержка покажется визуально в каждый конкретный свой запуск (чтоб отловить точно где её необходимо выставить, а где она не нужна), но на деле отображается только конечный результат.
Для визуализации вставьте флаг flags="EnableOutput";
RoxMarty wrote: ↑Thu 08 Aug, 2019 14:48тормознутости в сравнении со вторым
А можно примеры в студию?
Стартует очень заметно медленней. Несколько секунд против мгновенно. Не уверен, но вроде бы заходит в папки на многие тысячи файлов медленней. Хотя слишком разные условия для сравнения: другие группы раскраски файлов, всё другое.
А, ещё FAR3 памяти больше потребляет, хотя тоже то ещё сравнение: FAR3x64 против FAR2x86 и разный набор плагинов.
Ну и выход из FAR2 тоже заметно быстрее случается, чем из FAR3.
Last edited by Wave on Fri 09 Aug, 2019 22:35, edited 2 times in total.