Latest post of the previous page:
По теме, вызов функции через макрос имеет большой недостаток: не дает сборщику мусора утилизировать upvalus функции, т.к ссылка на функцию вряд ли удаляется из таблицы макросов после ее вызова._macroinit.lua vs RunAfterFARStart
_macroinit.lua vs RunAfterFARStart
ИМХО RunAfterFARStart надо оставить!
вы свалились в чисто программисткую логику!
для слегка продвинутого пользователя понятно RunAfterFARStart , и для распространения макросов - требовать от пользователя править какие-то файлы не хорошо (и так тяжело для некоторых найти папку и скопировать туда файл).
я до сих пор пользуюсь временными - быстро записываемые макросами с выставлением флага Автостарт.
вы свалились в чисто программисткую логику!
для слегка продвинутого пользователя понятно RunAfterFARStart , и для распространения макросов - требовать от пользователя править какие-то файлы не хорошо (и так тяжело для некоторых найти папку и скопировать туда файл).
я до сих пор пользуюсь временными - быстро записываемые макросами с выставлением флага Автостарт.
SimSU ··· ·· -- ··· ··-
_macroinit.lua vs RunAfterFARStart
. Скопировать файл с макросом и скопировать файл в котором стоит вызов функции - одинаковая трудоемкость. Из предыдущего обсуждения у меня сложилось впечатление, что автостартующий макрос - это такой вычурный способ вызов функции из файла в каталоге macros/scripts. Единственное преимущество автостартующего скрипта перед вызовом функции - это возможность не вызывать функцию, если фар вызван как редактор текстов. И то если информацию о режиме работы фара вытащат в LuaFar API, это преимущество пропадет. RunAfterFARStart надо оставить только из соображений совместимости. Реальной пользы от него я так и не увидел.SUSim wrote:требовать от пользователя править какие-то файлы не хорошо.
- Smitis
- Posts: 1709
- Joined: Fri 18 Mar, 2005 12:51
- Location: Питер
- Has thanked: 23 times
- Been thanked: 55 times
_macroinit.lua vs RunAfterFARStart
Автостартующий макрос - макрос автоматически выполняемый при запуске ФАРа. Может использоваться и как обычный макрос. В стародавние времена до lua это был единственный способ что-то выполнить при запуске ФАРа. Судя по дате регистрации, Вы эти времена должны были застать.gotar wrote:Из предыдущего обсуждения у меня сложилось впечатление, что автостартующий макрос - это такой вычурный способ вызов функции из файла в каталоге macros/scripts.
Разум когда-нибудь победит.
_macroinit.lua vs RunAfterFARStart
В начале этой темы я спросил есть ли отличия между вызовом функции вне макроса из файла в каталоге макросов. и автостартующим макросом. Мне оба самых больших знатоков макросов подтвердили, что разницы нет, за исключением того, что макрос будет вызван один раз, а функция будет выполнятся при каждом
lm:load
. Я что-то упустил?- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
_macroinit.lua vs RunAfterFARStart
Надо учитывать, что скрипты исполняются раньше (по мере их загрузки), а автостартующие макросы уже после загрузки, все скопом.
Разумеется это ограничение можно обойти без RunAfterFARStart, используя mf.postmacro.
RunAfterFARStart может быть удобно использовать если некий код требуется выполнять и при старте, и по шорткату.
Хотя и тут можно обойтись без RunAfterFARStart, просто используя общую функцию.
Плюс то о чём написал SUSim: в фаре испокон веков есть механизм записи макросов с клавиатуры, не вникая в особенности организации скриптов, и флаг RunAfterFARStart тут уместен.