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.
(Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел
Я рассматриваю Macro-API как legacy. Что-то такое, что оставлено для совместимости. Развивать его никогда не собирался и не собираюсь. Поэтому с моей точки зрения, вариант приведения в соответствие с документацией, как наименее времязатратный, является предпочтительным.
LuaMacro — Lua как язык макросов
Posted: Tue 28 Nov, 2017 20:46
by John Doe
Shmuel wrote: ↑Tue 28 Nov, 2017 20:32Развивать его никогда не собирался и не собираюсь.
Разве я такое предлагаю?
Наоборот, оставить как есть.
Может даже у кого макросы на это завязаны.
LuaMacro — Lua как язык макросов
Posted: Tue 28 Nov, 2017 20:51
by Shmuel
John Doe wrote: ↑Tue 28 Nov, 2017 20:46Наоборот, оставить как есть.
Пусть будет как есть, а вы в новой документации это отразите адекватно. Если же с SortGroup выяснится, что это баг - тогда на мантис.
LuaMacro — Lua как язык макросов
Posted: Mon 04 Dec, 2017 12:31
by John Doe
Вызов SetPath (api.lua) обёрнут в pcall.
Не очень понял зачем, ведь вызов "пользовательского" кода внутри не предполагается, а скрывать потенциальные баги апи только во вред.
LuaMacro — Lua как язык макросов
Posted: Mon 04 Dec, 2017 20:25
by zg
это легаси, есть конкретные проблемы, пишите, нет, не надо создавать информационный шум.
LuaMacro — Lua как язык макросов
Posted: Tue 05 Dec, 2017 07:53
by John Doe
Это вместо ответа на простой вопрос?
ОК.
LuaMacro — Lua как язык макросов
Posted: Fri 16 Mar, 2018 09:59
by John Doe
Небольшая неточность:
Object.Selected
в списках/меню: не имеет смысла (всегда 1, если меню не пустое).
(Под 1 понимается true)
На самом же деле в меню всегда возвращается false, независимо от того пустое оно или нет.
Предлагаю исправить в документации.
Хотя интуитивно Selected в меню вполне осмысленно, true могло бы означать пометку.
N=Plugin.Load(DllPath[,ForceLoad])
Загрузить плагин с именем dll-модуля DllPath.
Если указан ForceLoad, отличный от 0, то плагин загружается сразу в память.
Стоит акцентировать, что ForceLoad должен быть числом.
Если указан ForceLoad (число, отличное от 0), то плагин загружается сразу в память.
LuaMacro — Lua как язык макросов
Posted: Fri 16 Mar, 2018 10:52
by Shmuel
John Doe wrote: ↑Fri 16 Mar, 2018 09:59На самом же деле в меню всегда возвращается false, независимо от того пустое оно или нет.
Предлагаю исправить в документации.
Это сломалось в коде (билд 2897), значит и исправлять надо в коде. Если считаете нужным - на Мантис.
LuaMacro — Lua как язык макросов
Posted: Fri 16 Mar, 2018 11:35
by John Doe
Shmuel wrote: ↑Fri 16 Mar, 2018 10:52Если считаете нужным - на Мантис.
В исправлении кода практического смысла не вижу.
Проще исправить документацию: оставить "не имеет смысла", не уточняя значения.
А вот если есть шанс на изменение поведения, то я бы запостил:
true могло бы означать пометку
LuaMacro — Lua как язык макросов
Posted: Fri 16 Mar, 2018 12:28
by zg
John Doe wrote: ↑Fri 16 Mar, 2018 09:59На самом же деле в меню всегда возвращается false, независимо от того пустое оно или нет.
связано это с тем, что для листбокса в диалоге Object.Selected всегда возвращает 0. подозреваю, так было всегда. а когда сделали меню как диалог+листбокс — в меню стало так же. можно вернуть в меню как было и сделать в листбоксе, как в меню.
LuaMacro — Lua как язык макросов
Posted: Fri 16 Mar, 2018 13:29
by John Doe
Я не вижу практического смысла в том, чтобы Object.Selected зависело бы от того пустой список или нет, до тех пор пока сказано, что для списков и меню значение "не имеет смысла".
Поэтому и предлагаю просто уточнить документацию.
LuaMacro — Lua как язык макросов
Posted: Fri 16 Mar, 2018 14:20
by HaRT
John Doe wrote: ↑Fri 16 Mar, 2018 09:59интуитивно Selected в меню вполне осмысленно, true могло бы означать пометку.
Пример применения:
local fp = assert(io.open("some file.txt"))
mf.AddExitHandler(function() fp:close() end)
-- use fp; return from multiple places; do not care about closing fp
Пример мне кажется неудачный, ведь в случае ошибки закрывать файл не требуется.
Более того, поскольку значение fp будет равно nil, и попытка индексации должна вызывать ошибку, однако при исполнении данного примера ошибок не наблюдается.
Почему?
LuaMacro — Lua как язык макросов
Posted: Thu 10 May, 2018 08:40
by Shmuel
В случае ошибки открытия файла скрипт прекратит исполнение при вызове функции assert, при этом mf.AddExitHandler не будет вызвана.
Если же файл открылся, то, независимо от того, случится в дальнейшем ошибка или нет, файл будет закрыт по окончанию исполнения макроса.
LuaMacro — Lua как язык макросов
Posted: Thu 10 May, 2018 08:56
by John Doe
Shmuel wrote: ↑Thu 10 May, 2018 08:40
при этом mf.AddExitHandler не будет вызвана
И верно..
mf.AddExitHandler действительно будет удобна (раньше в этих же целях использовал mf.postmacro)