Уменьшить скорость воспроизведения макроса

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

Возможно вопрос глупый и где-то уже поднимался, но нередко бывает что после записи макроса через Ctrl+. и назначения его на нужную горячую клавишу для выполнения рутинных операций, связанных с текстом, макрос порой выполняется слишком быстро и вследствии чего как будто не успевает что-то копировать, вставлять, переносить (нужный текст)... - не знаю с чем связано. Недавно сменил компьютер на более мощный и проблема как будто усугубилась. Как будто FAR не успевает что ли...

Можно что-то подкрутить?

Прилагаю код макроса из реестра (может какую задержку там можно проставить при копировании/вставке, но я не знаю как :roll: )

"Sequence"="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"

P.S. FAR 2.1 x86 самый последний (проверил на FAR 3 - аналогичные проблемы)
Last edited by RoxMarty on Tue 06 Aug, 2019 12:36, edited 2 times in total.
Win 10 x64 / FAR 3 x64
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Уменьшить скорость воспроизведения макроса

Post by John Doe »

RoxMarty wrote: Tue 06 Aug, 2019 12:17 но нередко бывает что после записи макроса через Ctrl+. и назначения его на нужную горячую клавишу для выполнения рутинных операций, связанных с текстом, макрос порой выполняется слишком быстро и вследствии чего как будто не успевает что-то копировать, вставлять, переносить (нужный текст)...
Не сталкивался.
RoxMarty wrote: Tue 06 Aug, 2019 12:17 Прилагаю код макроса из реестра
Во-первых, far 3 на дворе.
Во-вторых, не расчитывайте что кто-то такую простыню даже пробовать станет.
(А вдруг оно форматирует c:)

Если реально хотите разобраться - разделите на части и тестируйте их отдельно.
PostMacro вам в помощь: viewtopic.php?f=60&t=9940
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

John Doe wrote: Thu 08 Aug, 2019 14:34 Во-первых, far 3 на дворе
Лично меня он не устраивает (не только по отсутствии нужных плагинов, но и тормознутости в сравнении со вторым), хоть с ФАРом уже более 15 лет, пытался много раз привыкнуть, но - никак. Использую только для определённых задач, недоступных предыдущей версии. К тому же я же написал, что в тройке такая же проблема и возникает случайно внезависимости ни от чего
John Doe wrote: Thu 08 Aug, 2019 14:34 Во-вторых, не расчитывайте что кто-то такую простыню даже пробовать станет
Это просто пример текущего переноса текста путём копирования и последующей его обработки в редакторе (форматирование в нужный мне формат). Он строго перепроверен, зациклен и рабочий (уже года три пользуюсь, хоть и с переменным успехом)

Именно на шаге копирования/вставки может возникнуть ошибка, ФАР не успевает будто копировать, а уже пытается вставить, причём при запуске цикла ещё раз - уже может успеть сделать правильно. Поэтому всё что я прошу - если есть какой-нибудь код "паузы/задержки" небольшой между копипастом - буду признателен.
Win 10 x64 / FAR 3 x64
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Уменьшить скорость воспроизведения макроса

Post by John Doe »

RoxMarty wrote: Thu 08 Aug, 2019 14:48 Лично меня он не устраивает
Ничего не имею против.
RoxMarty wrote: Thu 08 Aug, 2019 14:48 что в тройке такая же проблема и возникает
Я не утверждаю что проблемы нет.
Но если вы просите у сообщества помощи, то наличие нормального воспроизводимого примера на 2 порядка увеличивает вероятность успеха.
RoxMarty wrote: Thu 08 Aug, 2019 14:48 Именно на шаге копирования/вставки может возникнуть ошибка
Нужен код, минимальный, но достаточный для воспроизведения.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

RoxMarty, вы пишете, что проверяли на Far3, и что там та же проблема.
Вот вы и опубликуйте вашу проверку для Far3, тогда будет о чём говорить.
Укажите, что делается, что ожидаете получить и что идёт не так, как надо.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Уменьшить скорость воспроизведения макроса

Post by DrKnS »

RoxMarty wrote: Thu 08 Aug, 2019 14:48тормознутости в сравнении со вторым
А можно примеры в студию?
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

Shmuel wrote: Thu 08 Aug, 2019 16:00 Вот вы и опубликуйте вашу проверку для Far3
Не очень понимаю, мне что видео снять работы скрипта? :)
John Doe wrote: Thu 08 Aug, 2019 15:07 наличие нормального воспроизводимого примера на 2 порядка увеличивает вероятность успеха
Я же не могу воссоздать проблему с нуля. Есть реальная проблема с реальным макросом. Могу описать что он делает по пунктам разве что:



Конкретно макрос выполняет вот какие действия (расшифровка кода в шапке темы) при условии предварительной подготовки (см. предыдущий спойлер), для удобства сравнения с описанием, разобью его по строкам

Code: Select all

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


Вот такая задача. И да, я знаю, что можно это оптимизировать (например, вместо куч Shift+Left зажать Ctrl и переходить по блокам), но факт в том, что я давно уже пилю быстрые макросы на раз-два не задумываясь (главное правильно зациклить - тут надо продумать заранее)- лишь бы работало как надо. Так вот оно может то сработать в 9 случаях из 10, может всегда сработать, а может в 2 случаях из 10 (на одним и тех же файлах и условиях!). И я решительно не понимаю в чём дело.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

RoxMarty wrote: Thu 08 Aug, 2019 19:50
Shmuel wrote: Thu 08 Aug, 2019 16:00 Вот вы и опубликуйте вашу проверку для Far3
Не очень понимаю, мне что видео снять работы скрипта? :)
Нет, не видео. Я имел в виду следующее:
вы записали вручную свой макрос в Far3, затем исполняете с комстроки macro:save,
и в папке %farprofile%\macros\internal появляется файл, соответствующий этому макросу, который можно запостить в форуме.

Спасибо, что расписали подробно по шагам, но не думаю, что кто-то решится разбираться в этой головоломке до конца.
Не исключено, что это какая-то проблема в реализации макросов в Фаре.
Также не исключено, что в вашем макросе есть логическая ошибка, которая проявляется при определённых обстоятельствах.

P.S. По поводу вставки задержки: в Far2 есть функция sleep, в Far3 - mf.sleep.
Last edited by Shmuel on Thu 08 Aug, 2019 20:41, edited 1 time in total.
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

Shmuel wrote: Thu 08 Aug, 2019 20:23 Я имел в виду следующее
Ну так а разве то, что я сразу в шапке запостил не оно?

Хорошо, мне даже записывать не надо, т.к. хоткей на нём сидит и в Far 2 и в Far 3. Вот файл lua из Far 3

Code: Select all

Macro {
  description="VHS 2 position";
  area="Editor"; key="ShiftF7";
  flags="";
  code="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\")";
}

То, что под code прописано - то же самое, что я и в шапку выносил и выше расписывал пошагово. Это не оно разве?
Shmuel wrote: Thu 08 Aug, 2019 20:23 По поводу вставки задержки: в Far2 есть функция sleep
О! Вот что я и просил изначально! Пока не знаю сработает или нет, буду тестировать. Спасибо!
Last edited by RoxMarty on Thu 08 Aug, 2019 21:24, edited 2 times in total.
Win 10 x64 / FAR 3 x64
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

И ещё один момент: для макросов Far3 существует тест macrotest.lua. Он включает в себя и тест операций с буфером обмена. Так вот, этот тест нередко завершается неудачей, если наряду с Фаром запущена некоторая аппликация с окном Rich Text, например, Libre Office Calc. Возможно, что эта же проблема есть и в Far2, но у меня для Far2 нет механизма проверки.
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

А куда вставлять эту команду? В секвенцию маркоса? У меня не получилось, не видится такая команда
Win 10 x64 / FAR 3 x64
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

RoxMarty wrote: Thu 08 Aug, 2019 21:23 А куда вставлять эту команду? В секвенцию маркоса?
Да, например CtrlС sleep(100) Esc - но я для Far2 макросов не писал.
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

Спасибо за пример! Я сразу пробую в FAR 2 и FAR 3. В принципе, для выполнения данной процедуры я могу и FAR 3 запускать, лишь бы работало 100% всегда

Поналепил в FAR 2 и FAR 3 пока везде перед и после копирования вставок, а также перед и после вызова поиска - пока безрезультатно. Попробую теперь с задержкой. Благодарю за пример

Пробую на FAR 3

фрагмент

Code: Select all

mf.sleep(1000) CtrlC mf.sleep(1000)
Поналепил везде задержку 100 и даже 1000... но улучшений не заметил, увы... всё так же - когда нормально, когда ненормально :(

Даже 100000 выставил!



Улучшений не получил. А работает ли задержка вообще? Сколько надо влепить, чтоб её хотя бы ощутить и увидеть?
Last edited by RoxMarty on Thu 08 Aug, 2019 21:43, edited 1 time in total.
Win 10 x64 / FAR 3 x64
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

В Far3 так не получится - вставка sleep(100) будет игнорироваться.
В Far3 делается чуть сложнее: Keys("CtrlC") mf.sleep(100) Keys("Esc")
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

Shmuel wrote: Thu 08 Aug, 2019 21:37 В Far3 делается чуть сложнее: Keys("CtrlC") mf.sleep(100) Keys("Esc")
Не совсем понял, это начало строки кода или как?
В моём варианте (дополнил в предыдущий пост) что надо подправить? Каждую команду в кавычки поставить и перед ней Keys прописать?

Для пробы пока просто решил переделать весь код по указанному шаблону (без задержки)



Так выдаёт ошибку при запуске FAR

Code: Select all

...Profile\Macros\internal\Editor_ShiftF7.lua:5: '}' expected (to close '{' at line 1) near 'CtrlTab'
Last edited by RoxMarty on Thu 08 Aug, 2019 21:53, edited 2 times in total.
Win 10 x64 / FAR 3 x64
Post Reply

Return to “Нужна помощь”