_macroinit.lua vs RunAfterFARStart

Здесь обсуждается всё, что касается макросов.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

_macroinit.lua vs RunAfterFARStart

Post by gotar »

Latest post of the previous page:

По теме, вызов функции через макрос имеет большой недостаток: не дает сборщику мусора утилизировать upvalus функции, т.к ссылка на функцию вряд ли удаляется из таблицы макросов после ее вызова.
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

_macroinit.lua vs RunAfterFARStart

Post by SUSim »

ИМХО RunAfterFARStart надо оставить!

вы свалились в чисто программисткую логику!
для слегка продвинутого пользователя понятно RunAfterFARStart , и для распространения макросов - требовать от пользователя править какие-то файлы не хорошо (и так тяжело для некоторых найти папку и скопировать туда файл).

я до сих пор пользуюсь временными - быстро записываемые макросами с выставлением флага Автостарт.
SimSU ··· ·· -- ··· ··-
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

_macroinit.lua vs RunAfterFARStart

Post by gotar »

SUSim wrote:требовать от пользователя править какие-то файлы не хорошо.
. Скопировать файл с макросом и скопировать файл в котором стоит вызов функции - одинаковая трудоемкость. Из предыдущего обсуждения у меня сложилось впечатление, что автостартующий макрос - это такой вычурный способ вызов функции из файла в каталоге macros/scripts. Единственное преимущество автостартующего скрипта перед вызовом функции - это возможность не вызывать функцию, если фар вызван как редактор текстов. И то если информацию о режиме работы фара вытащат в LuaFar API, это преимущество пропадет. RunAfterFARStart надо оставить только из соображений совместимости. Реальной пользы от него я так и не увидел.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

_macroinit.lua vs RunAfterFARStart

Post by Smitis »

gotar wrote:Из предыдущего обсуждения у меня сложилось впечатление, что автостартующий макрос - это такой вычурный способ вызов функции из файла в каталоге macros/scripts.
Автостартующий макрос - макрос автоматически выполняемый при запуске ФАРа. Может использоваться и как обычный макрос. В стародавние времена до lua это был единственный способ что-то выполнить при запуске ФАРа. Судя по дате регистрации, Вы эти времена должны были застать.
Разум когда-нибудь победит.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

_macroinit.lua vs RunAfterFARStart

Post by gotar »

В начале этой темы я спросил есть ли отличия между вызовом функции вне макроса из файла в каталоге макросов. и автостартующим макросом. Мне оба самых больших знатоков макросов подтвердили, что разницы нет, за исключением того, что макрос будет вызван один раз, а функция будет выполнятся при каждом lm:load. Я что-то упустил?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

_macroinit.lua vs RunAfterFARStart

Post by John Doe »

gotar wrote: Я что-то упустил?
Надо учитывать, что скрипты исполняются раньше (по мере их загрузки), а автостартующие макросы уже после загрузки, все скопом.
John Doe wrote: Ещё одна потенциально возможная причина использования макроса вместо простого вызова - это необходимость преодоления
Ограничений в использовании некоторых функций (см. мануал)
Разумеется это ограничение можно обойти без RunAfterFARStart, используя mf.postmacro.

RunAfterFARStart может быть удобно использовать если некий код требуется выполнять и при старте, и по шорткату.
Хотя и тут можно обойтись без RunAfterFARStart, просто используя общую функцию.

Плюс то о чём написал SUSim: в фаре испокон веков есть механизм записи макросов с клавиатуры, не вникая в особенности организации скриптов, и флаг RunAfterFARStart тут уместен.
Post Reply

Return to “Обсуждение макросов”