Переменные

Far Manager Macro System

Переменные


Окружение

Макросы, загружаемые из одного файла, имеют общее окружение (environment). Переменные, объявляемые без ключевого слова local, принадлежат этому окружению.

  Пример: var = 15

Переменные окружения макрофайла сохраняют свои значения между вызовами макросов. Их значения сбрасываются в исходные при выполнении любой операции загрузки макросов: старт Far Manager, macro:load, lm:load, far.MacroLoadAll, MacroControl(MCTL_LOADALL).

Глобальные переменные

Для установки глобальных переменных, значения которых будут сохраняться в течение всей сессии Far Manager и будут доступны всем скриптам, нужно использовать таблицу _G.

  Пример: _G.var = 15

Глобальные переменные не меняют своего значения даже при операциях перезагрузки макросов, за исключением рестарта Far Manager или перезагрузки плагина LuaMacro.

При чтении несуществующей переменной окружения, прочтётся одноимённая глобальная переменная (наследование в некотором смысле).

  Пример:
    var = 5
    _G.var = 10
    far.Message(var) --> 5
    var = nil
    far.Message(var) --> 10

Upvalues

Локальные переменные, доступные из функций одного или нескольких макросов (upvalues), являются общими для этих функций и сохраняют свои значения между вызовами макросов. Их значения сбрасываются в исходные при выполнении любой операции загрузки макросов.

  Пример:
    local var = 15
    function inc_var() var = var+1 end
    function dec_var() var = var-1 end