Переменные
Окружение
Макросы, загружаемые из одного файла, имеют общее окружение (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