Latest post of the previous page:
Не создавайте больше одного макроса с флагом
RunAfterFARStart
и поместите в него всё, что хотели поместить в этот воображаемый файл.
Latest post of the previous page:
Не создавайте больше одного макроса с флагом
RunAfterFARStart
и поместите в него всё, что хотели поместить в этот воображаемый файл.Запуск Фара:
Но он выполнится после всех скриптов, а не до, как хотелось бы.
А вот это интереснее
Для этого есть _macroinit.lua. Что до "ограниченных" функций, то их совсем не обязательно там использовать.
Я так делаю в плагинах.
По моему Вы опять все переусложнили. Для того чтобы узнать сколько раз выполняется скрипт достаточно вначале скрипта написать что-то вродеJohn Doe wrote:Или (ещё лучше) реализовать это модулем (невыгружаемым, nounload)
Code: Select all
counter=counter or 0
counter++
if counter >1 return
Типа того, только counter должен принадлежать _G.
В общем да, при наличии RunAfterFARStart остальное плюшки.
Для плагинов есть стандартный механизм (IsLuaStateRecreated). Для макросов тоже желательно что-то подобное.
RecreateLuaState - это драконовский механизм, практически равноценный полной перезагрузке плагина. В моём сообщении имелся в виду другой механизм - far.ReloadDefaultScript, который более удобен для отладки LuaFAR-плагинов. И вот в нём необходимо различать, первый ли это запуск или повторный.
Над этим можно подумать.John Doe wrote:Разумеется каждый может реализовать это собственными силами, но, учитывая что мы тут скриптами делимся, хотелось бы иметь общепринятый способ
Насчёт стандартного мне неизвестно (может кто подскажет). LuaMacro внутри знает, благодаря специальному запросу Фара по своему выделенному интерфейсу (кстати, легко можно сделать функцию или свойство, доступное из макросов/плагинов - не знаю, надо ли).
Code: Select all
When the starting script is run it receives one boolean argument:
true – on its first run and after Lua state was recreated
false – on subsequent runs caused by setting far.ReloadDefaultScript = true.