Re: Spring — внедрение Lua в качестве макроязыка
Re: Spring — внедрение Lua в качестве макроязыка
Есть у меня , которым я пользуюсь периодически. Обнаружил, что он стал вешать FAR. Исследование показало, что причина в том, что теперь eval() не вызывает condition. Нельзя ли вернуть старое поведение?
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Spring — внедрение Lua в качестве макроязыка
Можно, уже сделал.IgorZ wrote:Исследование показало, что причина в том, что теперь eval() не вызывает condition. Нельзя ли вернуть старое поведение?
Re: Spring — внедрение Lua в качестве макроязыка
Благодарю.Shmuel wrote:Можно, уже сделал.IgorZ wrote:Исследование показало, что причина в том, что теперь eval() не вызывает condition. Нельзя ли вернуть старое поведение?
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Spring — внедрение Lua в качестве макроязыка
Для справки: старое поведение было изменено тут.IgorZ wrote:Есть у меня , которым я пользуюсь периодически. Обнаружил, что он стал вешать FAR. Исследование показало, что причина в том, что теперь eval() не вызывает condition. Нельзя ли вернуть старое поведение?
Плохо что нет другой возможности проверить существование макроса, кроме как попытавшись его выполнить.
Нагромождать Eval смысла больше нет, нужны новые функции работы с макросами.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
Code: Select all
shmuel 28.04.2014 13:42:55 +0200 - build 318
1. Убраны команды "luacheck:" и "mooncheck:".
2. В функции eval добавлен опциональный 3-й параметр 'Lang'.
Может не будем её дальше надстраивать?
Зачем она вообще, при наличии loadstring/loadfile/dofile/mooonscript.loadstring/etc?
Единственное специфическое её действие это
eval(S,2)
— "Выполнить макрос, назначенный на сочетание клавиш S"-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: LuaMacro — Lua как язык макросов
Поскольку она всё-таки есть, было бы странно, если бы работала только с Lua, но не с MoonScript.John Doe wrote:Функция eval и без того страшна была, с двумя параметрами.
Может не будем её дальше надстраивать?
В пространстве mf есть целый набор функций, которые можно выкинуть. Это не делается из соображений сохранения обратной совместимости. Кому не надо - пусть не пользуется.John Doe wrote:Зачем она вообще, при наличии loadstring/loadfile/dofile/mooonscript.loadstring/etc?
За замечания по мануалу - спасибо.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
Оставить как было и не трогать. Уж точно не усложнять сложное, и не поощрять к использованию неактуального.Shmuel wrote:Поскольку она всё-таки есть, было бы странно, если бы работала только с Lua, но не с MoonScript.
Тот, кто способен воспользоваться MoonScript, не будет страдать по поводу того, что eval не дублирует встроенный функционал языка (я гарантирую это).
В какой-то момент ради стройности и логичности системы от обратной совместимости лучше отказаться.Shmuel wrote:В пространстве mf есть целый набор функций, которые можно выкинуть. Это не делается из соображений сохранения обратной совместимости. Кому не надо - пусть не пользуется.
Подготовить список планируемых к удалению функций, и указать чем их следует заменить. Выдержать время для перехода, и благополучно грохнуть. Это в макроязыке и до Lua делалось.
- Aidar
- Posts: 541
- Joined: Mon 09 Mar, 2009 22:43
- Location: Kazan
- Has thanked: 8 times
- Been thanked: 7 times
- Contact:
Re: LuaMacro — Lua как язык макросов
Думаю, было бы полезно вынести эту функциональность в MacroControl API +John Doe wrote:... Единственное специфическое её действие этоeval(S,2)
—
"Выполнить макрос, назначенный на сочетание клавиш S"
возможность проверки наличия макроса на клавише.
Для различения макроса/клавиши в SequenceText можно ввести флаг.
Так было бы удобнее передавать FAR'у команду на выполнение действия/макроса,
назначенного на клавишу, если клавиша не обрабатывается в самом плагине/скрипте.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
LuaMacro — Lua как язык макросов
eval(key,2)
возвращает -2
во всех случаях, когда макрос не был выполнен.- не существует
- функция condition вернула false
- нашлось несколько подходящих макросов, но меню с выбором был отменено пользователем
По крайней мере последний случай очень хотелось бы отличать, предлагаю например возвращать
-3
.- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
LuaMacro — Lua как язык макросов
Проблема с eval.
Есть макрос:
Требуется выполнить его с помощью eval:
Однако не работает, видимо наличие слеша в середине приводит к конфликту с синтаксисом
Предлагаю изменить, например как-то так:
P.S.
На практике не сталкивался, но можно представить себе и имена вида "Shell/xxx". Поддержку тоже несложно добавить.
Update: http://bugs.farmanager.com/view.php?id=2899
Есть макрос:
Code: Select all
Macro {
area="Common"; key="Ctrl/xxx";
action=far.Show;
}
lua:=eval("Ctrl/xxx",2)
Однако не работает, видимо наличие слеша в середине приводит к конфликту с синтаксисом
Area/Key
Предлагаю изменить, например как-то так:
P.S.
На практике не сталкивался, но можно представить себе и имена вида "Shell/xxx". Поддержку тоже несложно добавить.
Update: http://bugs.farmanager.com/view.php?id=2899
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
LuaMacro — Lua как язык макросов
Есть такой макрос:
При нажатии LCtrlF1 вижу CtrlF1
А при запуске
Не совпадает (насколько я понимаю в фаре правильное наименование комбинации с левым модификатором это CtrlF1)
Примечание модератора Смежная тема: http://forum.farmanager.com/viewtopic.php?f=15&t=9496
Code: Select all
Macro {
area="Shell"; key="CtrlF1"; priority=100;
action=function()
far.Show(mf.akey(1,1))
end;
}
А при запуске
lua:eval("LCtrlF1",2)
вижу LCtrlF1.Не совпадает (насколько я понимаю в фаре правильное наименование комбинации с левым модификатором это CtrlF1)
Примечание модератора Смежная тема: http://forum.farmanager.com/viewtopic.php?f=15&t=9496