Здесь обсуждается всё, что касается макросов.
John Doe
Бюрократ
Posts: 13807 Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:
Post
by John Doe » Mon 16 Jul, 2012 13:44
Проект Spring (обсуждение ) влился в стабильную версию Far Manager 3.0. Code: Select all
zg 30.09.2012 03:26:20 +0200 - build 2851
1. слияние с проектом Spring (https://github.com/shmuz/Spring).
в связи с этим вместо встроенного макроязыка используется скриптовый язык Lua 5.1 (http://www.lua.org).
Code: Select all
shmuel 25.04.2014 21:32:52 +0200 - build 3878
1. Поддержка MoonScript в API плагинов
changelog — список изменений в плагине LuaMacro .
Таким образом, в макросах сейчас доступны:
См. также:
John Doe
Shmuel
Posts: 6820 Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times
Post
by Shmuel » Wed 06 Jul, 2016 12:40
Latest post of the previous page:
John Doe wrote: Вопрос: необходимо ли это делать сейчас?
Пока что да.
John Doe wrote: как вы относитесь к тому чтобы избавить пользователя от такой необходимости?
Вот это вопрос неоднозначный. Технически это сейчас реализовать легко, а вот нужно ли?
Shmuel
John Doe
Бюрократ
Posts: 13807 Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:
Post
by John Doe » Wed 06 Jul, 2016 13:14
Shmuel wrote: а вот нужно ли?
Кажется удобным.
И я затрудняются придумать, как применить обратное.
John Doe
Shmuel
Posts: 6820 Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times
Post
by Shmuel » Wed 06 Jul, 2016 17:16
Shmuel wrote: Технически это сейчас реализовать легко
Глянул в код, и оказалось, что не так это легко, как представлялось. Так что ещё подумать надо.
Shmuel
DrKnS
Posts: 6114 Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times
Post
by DrKnS » Mon 05 Sep, 2016 12:39
Shmuel , можно ли при удалении по Ctrl. Ctrl. макроса из macros\scripts показывать в качестве sequence что-то более вменяемое, чем ""
? Код, или путь к файлу, или хотя бы заглушку какую-то?
DrKnS
Shmuel
Posts: 6820 Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times
Post
by Shmuel » Mon 05 Sep, 2016 12:45
DrKnS , естественно, можно. Попробую в ближайшие дни что-то придумать (благо на работе напряг временно закончился).
Shmuel
Shmuel
Posts: 6820 Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times
Post
by Shmuel » Tue 06 Sep, 2016 09:09
4783.
Применённое решение может показаться несколько радикальным, но мне оно представляется наиболее логичным.
Если есть другие мнения/предложения, можно обсудить.
Shmuel
HaRT
Moderator
Posts: 10823 Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times
Post
by HaRT » Wed 21 Sep, 2016 20:54
Запускаю Фар с единственным плагином (LuaMacro) и
единственным скриптом , язык интерфейса английский. Нажимаю
F9 Down AltC
(можно и с другой мнемоникой из этого меню) — получаю сообщение о
переполнении стэка Code: Select all
╔══════════════════════════ Exception occurred ══════════════════════════╗
║ Exception: Stack Overflow ║
║ Address: 0x66D87726 luaL_error ║
║ Function: ║
║ Module: C:\Program Files (x86)\Far Manager\Far.exe ║
╟────────────────────────────────────────────────────────────────────────╢
║ { Terminate Far } [ Stack ] [ Minidump ] [ Ignore ] ║
╚════════════════════════════════════════════════════════════════════════╝
или
Code: Select all
╔══════════════════════════ Exception occurred ══════════════════════════╗
║ Exception: Stack Overflow ║
║ Address: 0x66DC1315 lua_dump ║
║ Function: ║
║ Module: C:\Program Files (x86)\Far Manager\Far.exe ║
╟────────────────────────────────────────────────────────────────────────╢
║ { Terminate Far } [ Stack ] [ Minidump ] [ Ignore ] ║
╚════════════════════════════════════════════════════════════════════════╝
. По кнопке
[ Stack ]
бывает всякое, иногда
Code: Select all
0x66D87726 luaL_error
0x66D88AA6 luaL_error
0x66D8E0FC lua_getfield
0x00D14F5D Dialog::DlgProc (c:\src\unicode_far\dialog.cpp:4436)
0x00D16FA0 Dialog::SendMessageW (c:\src\unicode_far\dialog.cpp:6129)
0x00D0FF40 Dialog::VMProcess (c:\src\unicode_far\dialog.cpp:2432)
0x00DE6ECA KeyMacro::CallFar (c:\src\unicode_far\macro.cpp:2028)
0x00E2271A pluginapi::apiCallFar (c:\src\unicode_far\plugapi.cpp:3232)
0x6E5EC608 LF_LoadFile
0x77470EA9 RtlAllocateHeap
0x00EA1257 __vcrt_FlsGetValue (f:\dd\vctools\crt\vcruntime\src\internal\winapi_downlevel.cpp:388)
0x6E5F6AAE LF_LoadFile
0x6E5E9997 LF_ProcessDialogEvent
0x729D6AC2 ProcessDialogEventW
0x00E15872 seh_invoke<<lambda_f41460383720551623fad58fcfc60870>,<lambda_3badc02b65c829bff86880f9315b2d5a>,<lambda_93c60f65e0ea834631438ecd297053e6> > (c:\src\unicode_far\farexcpt.hpp:60)
0x6E5F5E88 LF_LoadFile
0x66D87732 luaL_error
0x66D88968 luaL_error
0x6E5FB36B LF_RunLuafarInit
0x66D88B2F luaL_error
0x66D83380
0x66D8EB9D lua_pcall
0x6E5EA9D6 LF_SetFindList
0x6E5EC183 LF_LoadFile
0x00DE2CF2 KeyMacro::GetKey (c:\src\unicode_far\macro.cpp:749)
0x00DDA64E ProcessMacros (c:\src\unicode_far\keyboard.cpp:546)
0x00DDAD6B GetInputRecordImpl (c:\src\unicode_far\keyboard.cpp:759)
0x00DDB7D4 GetInputRecord (c:\src\unicode_far\keyboard.cpp:1053)
0x00DF8676 Manager::ProcessMainLoop (c:\src\unicode_far\manager.cpp:619)
0x00DF741D Manager::ExecuteModal (c:\src\unicode_far\manager.cpp:353)
0x00D147D6 Dialog::Process (c:\src\unicode_far\dialog.cpp:4303)
0x00E998BE VMenu2::RunEx (c:\src\unicode_far\vmenu2.cpp:547)
0x00DCC27C HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:416)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
0x00DCC344 HMenu::ProcessSubMenu (c:\src\unicode_far\hmenu.cpp:464)
0x00DCB6B3 HMenu::ProcessKey (c:\src\unicode_far\hmenu.cpp:227)
Far Manager v3.0 build 4794,4774 x86
HaRT
Shmuel
Posts: 6820 Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times
Post
by Shmuel » Wed 21 Sep, 2016 21:07
У меня не повторяется (Windows XP SP3 x86, Far 3.0.4792).
Shmuel
Shmuel
Posts: 6820 Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times
Post
by Shmuel » Wed 21 Sep, 2016 21:43
HaRT wrote: Обсуждение переношу к скрипту.
Зря перенесли. То, что макрос зацикливается, это ясно, но вот почему переполнение стека, мне непонятно.
Вот здесь есть переполнение стека:
Code: Select all
Macro {
area = "MainMenu"; key = 'AltC';
action = function()
while true do Keys('Right') end
end;
}
А вот здесь нету:
lua:while true do Keys"Right" end
. Почему?
Last edited by
Shmuel on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлена ссылка на перенесённые сообщения
Shmuel
HaRT
Moderator
Posts: 10823 Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times
Post
by HaRT » Wed 21 Sep, 2016 21:51
Shmuel wrote: Зря перенесли
Переделил между темами.
HaRT
John Doe
Бюрократ
Posts: 13807 Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:
Post
by John Doe » Wed 21 Sep, 2016 21:56
Shmuel wrote: А вот здесь нету: lua:while true do Keys"Right" end. Почему?
И тут нету:
Code: Select all
lua:Keys"F9 ";while true do Keys"Right" end
А тут уже есть:
Code: Select all
lua:Keys"F9 с";while true do Keys"Right" end
John Doe
Shmuel
Posts: 6820 Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times
Post
by Shmuel » Wed 21 Sep, 2016 22:07
Проблема, по-видимому в Фар.
Я без всяких макросов нажал F9 Down и зажал Right. Через примерно 3-4 минуты Фар вылетел.
Shmuel
HaRT
Moderator
Posts: 10823 Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times
Post
by HaRT » Wed 21 Sep, 2016 22:14
Shmuel wrote: Я без всяких макросов нажал F9 Down и зажал Right. Через примерно 3-4 минуты Фар вылетел.
У меня за 2 минуты.
Заодно и ржавые пассатижи пригодились.
HaRT
DrKnS
Posts: 6114 Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times
Post
by DrKnS » Thu 22 Sep, 2016 00:35
Поздравляю, господа - вы нашли один из древнейших багов, оставленных аж представителями предыдущей цивилизации.
DrKnS
John Doe
Бюрократ
Posts: 13807 Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:
Post
by John Doe » Mon 03 Oct, 2016 21:05
Code: Select all
Macro {
area="Shell"; key="/[LR]Alt./";
action=function()
Keys"AKey"
end;
}
С таким макросом быстрый поиск перестаёт находить кириллицу..
Кто виноват, и можно ли что-то сделать?
John Doe
Shmuel
Posts: 6820 Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times
Post
by Shmuel » Mon 03 Oct, 2016 21:22
John Doe wrote: С таким макросом быстрый поиск перестаёт находить кириллицу..
В 4775 ещё находит, в 4779 уже нет.
Shmuel