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

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

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

Post by RoxMarty » Tue 06 Aug, 2019 12:17

Возможно вопрос глупый и где-то уже поднимался, но нередко бывает что после записи макроса через 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.

User avatar
John Doe
Бюрократ
Posts: 12287
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 164 times

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

Post by John Doe » Thu 08 Aug, 2019 14:34

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: 50
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 5 times
Been thanked: 1 time

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

Post by RoxMarty » Thu 08 Aug, 2019 14:48

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

Именно на шаге копирования/вставки может возникнуть ошибка, ФАР не успевает будто копировать, а уже пытается вставить, причём при запуске цикла ещё раз - уже может успеть сделать правильно. Поэтому всё что я прошу - если есть какой-нибудь код "паузы/задержки" небольшой между копипастом - буду признателен.

User avatar
John Doe
Бюрократ
Posts: 12287
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 164 times

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

Post by John Doe » Thu 08 Aug, 2019 15:07

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: 5789
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 210 times

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

Post by Shmuel » Thu 08 Aug, 2019 16:00

RoxMarty, вы пишете, что проверяли на Far3, и что там та же проблема.
Вот вы и опубликуйте вашу проверку для Far3, тогда будет о чём говорить.
Укажите, что делается, что ожидаете получить и что идёт не так, как надо.

User avatar
DrKnS
Posts: 5280
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 202 times

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

Post by DrKnS » Thu 08 Aug, 2019 16:37

RoxMarty wrote:
Thu 08 Aug, 2019 14:48
тормознутости в сравнении со вторым
А можно примеры в студию?

RoxMarty
Posts: 50
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 5 times
Been thanked: 1 time

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

Post by RoxMarty » Thu 08 Aug, 2019 19:50

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: 5789
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 210 times

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

Post by Shmuel » Thu 08 Aug, 2019 20:23

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: 50
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 5 times
Been thanked: 1 time

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

Post by RoxMarty » Thu 08 Aug, 2019 20:56

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.

Shmuel
Posts: 5789
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 210 times

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

Post by Shmuel » Thu 08 Aug, 2019 21:12

И ещё один момент: для макросов Far3 существует тест macrotest.lua. Он включает в себя и тест операций с буфером обмена. Так вот, этот тест нередко завершается неудачей, если наряду с Фаром запущена некоторая аппликация с окном Rich Text, например, Libre Office Calc. Возможно, что эта же проблема есть и в Far2, но у меня для Far2 нет механизма проверки.

RoxMarty
Posts: 50
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 5 times
Been thanked: 1 time

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

Post by RoxMarty » Thu 08 Aug, 2019 21:23

А куда вставлять эту команду? В секвенцию маркоса? У меня не получилось, не видится такая команда

Shmuel
Posts: 5789
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 210 times

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

Post by Shmuel » Thu 08 Aug, 2019 21:27

RoxMarty wrote:
Thu 08 Aug, 2019 21:23
А куда вставлять эту команду? В секвенцию маркоса?
Да, например CtrlС sleep(100) Esc - но я для Far2 макросов не писал.

RoxMarty
Posts: 50
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 5 times
Been thanked: 1 time

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

Post by RoxMarty » Thu 08 Aug, 2019 21:32

Спасибо за пример! Я сразу пробую в 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.

Shmuel
Posts: 5789
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 210 times

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

Post by Shmuel » Thu 08 Aug, 2019 21:37

В Far3 так не получится - вставка sleep(100) будет игнорироваться.
В Far3 делается чуть сложнее: Keys("CtrlC") mf.sleep(100) Keys("Esc")

RoxMarty
Posts: 50
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 5 times
Been thanked: 1 time

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

Post by RoxMarty » Thu 08 Aug, 2019 21:47

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.

Shmuel
Posts: 5789
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 210 times

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

Post by Shmuel » Thu 08 Aug, 2019 21:58

Если вы хотите редактировать макросы для Фар3, то для начала перенесите этот файл из macros\internal в macros\scripts и замените его содержимое на:

Code: Select all

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;
}
Теперь отвечаю на ваш вопрос:

Code: Select all

Keys("последовательность клавиш")
mf.sleep(число)
Keys("последовательность клавиш")
Не знаю, понятно ли объяснил.

Post Reply

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