zg 30.09.2012 03:26:20 +0200 - build 2851
1. слияние с проектом Spring (https://github.com/shmuz/Spring).
в связи с этим вместо встроенного макроязыка используется скриптовый язык Lua 5.1 (http://www.lua.org).
после перехода на Lua: macroapi_manual.ru.chm.
(Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел
Не упомянуто, что Plugin.Exist возвращает true/false.
Насчёт Plugin.Load/Plugin.Unload вопрос: им бы тоже логично было возвращать логическое значение.
Кстати, в настоящий момент в случае успеха Plugin.Load возвращает не 1, а 25953664
LuaMacro — Lua как язык макросов
Posted: Mon 20 Nov, 2017 17:08
by Shmuel
1. Уже упомянуто.
2. Не будем уже теперь ломать API.
3. Возвращается описатель плагина (число может быть разное). Это тянется ещё с времён старого макроязыка.
LuaMacro — Lua как язык макросов
Posted: Mon 20 Nov, 2017 18:00
by John Doe
Shmuel wrote: ↑Mon 20 Nov, 2017 17:08Не будем уже теперь ломать API.
Полагаю, в данном случае это бы не особо повредило, но спорить не буду.
LuaMacro — Lua как язык макросов
Posted: Mon 20 Nov, 2017 21:47
by John Doe
Параметра Macros.CONVFMT в коде фара уже нет, только в macrotest.lua остался похоже.
LuaMacro — Lua как язык макросов
Posted: Mon 20 Nov, 2017 21:58
by Shmuel
Несколько лет я пытался "идти в ногу" с изменениями в параметрах конфигурации, делая соответствующие изменения в macrotest.lua. В какой-то момент мне это надоело, и сейчас вызов test_Far_GetConfig() закомментирован.
LuaMacro — Lua как язык макросов
Posted: Wed 22 Nov, 2017 11:58
by John Doe
В "Изменениях" не упомянута функция eval.
Помимо описанных в мануале расширений вижу следующее:
коды 1-10 не возвращаются, в случае ошибки всегда 11 (а подробную информацию можно получить в режиме 3)
пустая макропоследовательность не считается ошибкой, соответственно код 12 тоже не возвращается.
в режиме 3 не соблюдается указанный в Энциклопедии формат, возвращается сообщение от loadstring
Это утверждение более не соответствует действительности:
Локальные переменные - общие для текущего исполняемого макроса и макропоследовательности, исполняемой функцией eval.
На самом деле как-то так:
При выполнении макропоследовательности для неё будет установлено окружение текущего исполняемого макроса, но не локальные переменные.
Код возврата -1 в актуальных условиях представляется лишним, вместо него логично вызывать ошибку времени выполнения.
Кроме того, мануал стоит дополнить замечанием о том, что все режимы, за исключением 2 (запуск макроса по названию клавиши), существуют лишь из соображений обратной совместимости, и рациональнее использовать штатные функции языка loadstring/loadfile/dofile/mooonscript.loadstring/etc
John Doe, заведите тикет, поместите эту информацию туда. В реальном времени не получится.
LuaMacro — Lua как язык макросов
Posted: Mon 27 Nov, 2017 10:12
by John Doe
Panel.SetPath возвращает true/false, а не 1/0, как сказано в документации.
С последними изменениями не связано, в билде 5000 наблюдаю такое же поведение.
Учитывая давность, предлагаю просто отразить в документации.
LuaMacro — Lua как язык макросов
Posted: Mon 27 Nov, 2017 10:55
by Shmuel
John Doe wrote: ↑Mon 27 Nov, 2017 10:12предлагаю просто отразить в документации.
`V=Panel.Item(panelType,itemIdx,Property)`
...
В зависимости от запрашиваемого `Property` функция возвращает следующие свойства элемента:
...
`8`
: `number`
: "Выделен?"
На самом деле boolean.
LuaMacro — Lua как язык макросов
Posted: Tue 28 Nov, 2017 19:38
by Shmuel
`10` тоже Boolean.
LuaMacro — Lua как язык макросов
Posted: Tue 28 Nov, 2017 19:41
by John Doe
Причём всегда true, баг?
LuaMacro — Lua как язык макросов
Posted: Tue 28 Nov, 2017 19:56
by Shmuel
У меня для элемента с индексом 1 возвращается false.
Может быть и баг. Я этой функцией ещё никогда не пользовался.
А насчёт противоречия с документацией (number / boolean), то проще в Фаре исправить, чем в документации.
LuaMacro — Lua как язык макросов
Posted: Tue 28 Nov, 2017 20:04
by John Doe
Во-первых boolean это действительно логично.
Во-вторых в фаре это уже много лет, не стоит менять.
В той документации, что правлю сейчас я -- исправить легко.
LuaMacro — Lua как язык макросов
Posted: Tue 28 Nov, 2017 20:09
by Shmuel
John Doe wrote: ↑Tue 28 Nov, 2017 20:04Во-первых boolean это действительно логично.
Там плохо получается: если индекс невалидный, то возвращается число 0.
LuaMacro — Lua как язык макросов
Posted: Tue 28 Nov, 2017 20:23
by John Doe
А если возвращать число, то вообще нельзя будет определить некорректный индекс, так?