Изменились некоторые тонкости в поведении макросов

Здесь обсуждается всё, что касается макросов.
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Изменились некоторые тонкости в поведении макросов

Post by HaRT »

Latest post of the previous page:

Shmuel wrote:3. Потому что на разные ключи можно задать разные доп. действия (с общим флагом не прокатит)
Можно с этого места поподробнее?
Что тут называется ключами, какие действия и почему речь идёт про общий флаг?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Изменились некоторые тонкости в поведении макросов

Post by John Doe »

Shmuel wrote:3. Потому что на разные ключи можно задать разные доп. действия (с общим флагом не прокатит).
Разве нельзя Keys("x y z") при необходимости разделить на Keys("x"); Keys("y"); Keys("z")?

И нельзя ли подробнее о том, что нового нам дают обсуждаемые доп. действия по сравнению с аналогичными уже имеющимися средствами?
(Я спрашивал тут: http://forum.farmanager.com/viewtopic.p ... 07#p119007)
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Изменились некоторые тонкости в поведении макросов

Post by Shmuel »

Уважаемые John Doe и HaRT (без иронии!).
Я физически не могу ответить на все вопросы, поэтому выбираю только отдельные.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Изменились некоторые тонкости в поведении макросов

Post by NightRoman »

Shmuel, "останавливатель" макроса я задействую, если с ним побочных эффектов не будет. В какой форме он будет задаваться, лично мне не важно (точнее, не могу оценить сейчас, что лучше), лишь бы в Keys() можно это было сделать.

В итоге мелькание всего и вся у меня в тестах будет. Но хотя бы без мелькания меню плагинов. Если будет мелькать только то, что тестируется, то это может даже и не так плохо. Кроме того, у себя я могу этот режим сделать опциональным, включаемым только для нескольких тестов.

Словом, к вопросу о пользе - польза должна быть хотя бы для тестов. А это важная область.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Изменились некоторые тонкости в поведении макросов

Post by NightRoman »

Макрос, который делает само-пост у меня выглядит так:

Code: Select all

Keys('F11') Menu.Select('FarNet', 2) Keys('Enter')
С подходом с "$" он будет выглядеть так:

Code: Select all

Keys('F11') Menu.Select('FarNet', 2) Keys('Enter$')
Верно?

А если предположить, что макрос не заканчивается на ключ (пусть и гипотетически пока, например, представим, что выше Menu.Select() делал бы и Enter сам и Keys('Enter') в конце бы не было):

Code: Select all

<что-то на Lua без Keys() в конце, и надо чтобы при последней операции макрос закачивался>
Иначе говоря, то, что инициируется последней командой должно перед этим завершить режим макроса. Сумбурно, наверное, но лучше не сформулирую.

Наверное, надо, чтобы и для такого случая был способ.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Изменились некоторые тонкости в поведении макросов

Post by Shmuel »

NightRoman wrote:Наверное, надо, чтобы и для такого случая был способ.
Обсуждаемый вопрос относится ко всем функциям, перечисленным как "ограниченные в использовании" в macroapi_manual. Все они вызывают yield из корутины макроса и передают управление Фару. Keys стоит особняком в том смысле, что она может это делать многократно за один её вызов.

Решением для всех этих функций может быть дополнительная ф-ция, вызываемая перед вызовом одной из "ограниченных". Эта доп. ф-ция просто установит внутренний флаг "завершиться при первой же возможности". (Вместо доп. ф-ции можно сделать доп. режим mmode).

Но вообще речь может идти не только о "синхронном" завершении макроса, но и о том, чтобы "синхронно" включить/выключить перерисовку (а может и ещё что-то всплывёт).
Last edited by Shmuel on Tue 20 May, 2014 18:16, edited 1 time in total.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Изменились некоторые тонкости в поведении макросов

Post by NightRoman »

Shmuel
Хорошо, буду ждать решений по этому вопросу. Как будут, задействую. Для меня спешки теперь никакой нет. Проблемы с тестами (с чего начинался топик) решил временным включением EnableOutput при само-постах для некоторых тестов. Спасибо большое за эту наводку и, вообще, за участие в решении проблемы.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Изменились некоторые тонкости в поведении макросов

Post by Shmuel »

Хочу ещё заметить, что в этой идее нет ничего нового, то-есть я ничего не изобретаю. В старом (до-Lua) макродвижке использовались функции PeekKey и IsExecutingLastKey, подозреваю, что для схожих целей.
Post Reply

Return to “Обсуждение макросов”