FarCmds: запуск far:macro save из истории команд

Здесь можно сообщить о найденных багах в Far.
Post Reply
User avatar
HaRT
Moderator
Posts: 8682
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 145 times

FarCmds: запуск far:macro save из истории команд

Post by HaRT » Wed 30 Aug, 2006 10:19

far:macro save и macro:save не отрабатывают, если запущены из истории команд. :(
far:macro load и macro:load, напротив, работают нормально.

Far b.2112, FarCmds b.18, без прочих плагинов

У кого-нибудь это воспроизводится?

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Post by Skirda » Wed 30 Aug, 2006 11:02

А... случаем вызов save из меню не из макроса отрабатывает?

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Post by Skirda » Wed 30 Aug, 2006 11:14

...почему то (почему - не помню :oops:) стоит проверка на "сейчас макрос исполняется?"
Если "угу", то return FALSE.

User avatar
HaRT
Moderator
Posts: 8682
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 145 times

Post by HaRT » Wed 30 Aug, 2006 11:26

Skirda
Не знаю, как оно так внутренне реализовано, но макрос на Enter в меню у меня есть (он просто говорит Enter и дополнительно сбрасывает некую глобальную переменную). Если его убить, то действительно начинает работать как надо. Почему так?

Кстати, в режиме записи макроса save и load не отрабатывают и из командной строки. Это специально?

User avatar
HaRT
Moderator
Posts: 8682
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 145 times

Post by HaRT » Wed 30 Aug, 2006 11:28

Skirda wrote:... стоит проверка на "сейчас макрос исполняется?"
Что считается моментом окончания исполнения макроса?

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Post by Skirda » Wed 30 Aug, 2006 11:48

1. Во время записи мкароса обе команды не отрабатывают
2. Окончание макроса - когда в стеке не осталось ни одной команды.

Твой Enter запускает некий процесс, пока он не отработает (не будет передано управление ФАру, а оттуда макродвижку)... считается, что исполняется макрос.

User avatar
HaRT
Moderator
Posts: 8682
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 145 times

Post by HaRT » Wed 30 Aug, 2006 12:05

Skirda
Ладно, с этим разобрались, спасибо. (Хотя пока по-прежнему непонятно, как в моём случае это обойти.)

А нет ли каких-то предположений, почему macro:save может не работать из AltHistory? Там ведь диалог, и Enter у меня не замакросен…

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Post by Skirda » Wed 30 Aug, 2006 12:20

Хмм... мне тут подумалось...
С момента "запрета" исполнения SAVE при активном макросе утекло много воды, многое было исправлено и все такое...

Давай пожалуй "откроем" возможность исполнения save во время проигрывания макроса, т.к. байткод исполняется в отдельной области и т.н. RAM не трогает...

В обшем посмотрим, что из этого получится ;-)

User avatar
HaRT
Moderator
Posts: 8682
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 145 times

Post by HaRT » Wed 30 Aug, 2006 14:16

Skirda wrote:пожалуй "откроем" возможность
Спасибо!
HaRT wrote:нет ли каких-то предположений, почему macro:save может не работать из AltHistory? Там ведь диалог, и Enter у меня не замакросен…
А об этом есть какие-то идеи? (Разумеется, у Nikolayа я тоже спрошу.)

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Post by Skirda » Wed 30 Aug, 2006 15:20

HaRT, покажи "алгоритм", чтобы можно было по нему повторить твою беду.

User avatar
HaRT
Moderator
Posts: 8682
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 145 times

Post by HaRT » Wed 30 Aug, 2006 16:00

Skirda
Да какой там алгоритм…
Запускаю far:macro save из командной строки — отрабатывает.
Записываю для теста новый макрос (любой).
Открываю список Альтернативной истории команд (любым способом).
Выбираю в нём far:macro save, нажимаю Enter — в соответствующий ключ реестра ничего не переносится.

Если конкретно, то я сначала использую быстрый префикс /, а потом — макрос ShiftSpace, который вызывает AltHistory| Commands History| List of commands.

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Post by Skirda » Wed 30 Aug, 2006 16:22

нарисуй траблу на мантис.
про альтхистори, farcmds и макросы.
вместе с указанным алгоритмом.
чтобы не забыть :-)

User avatar
t-rex
Страшный и ужасный
Posts: 4900
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Contact:

Post by t-rex » Thu 31 Aug, 2006 00:41

HaRT
Ну скорее всего AltHistory выполняет макрос чтоб запустить команду в комстроке (Enter).

User avatar
HaRT
Moderator
Posts: 8682
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 145 times

Post by HaRT » Thu 31 Aug, 2006 11:16

Skirda
Записал на Мантис: № 236 (правда, в обобщённой формулировке).

t-rex
Nikolay подтвердил.

Post Reply

Return to “Глюки и баги”