Решил попробовать реализовать на Lua идею, описанную здесь (речь идет о копировании файлов в каталоги других экземпляров Фара). Предпосылкой для этого является возможность обмена данными между различными экземплярами Фара. Как предложил zg, собираюсь сделать это с момощью named pipes. Pipe будет создаваться при старте и уничтожаться при выходе из Фар.
Решил все делать на Lua с применением FFI, т.к. это, наверное, проще в смысле инфраструктуры (не надо компилировать, создавать проекты и т.д.).
Вопрос: Как сделать так, чтобы определенная функция из скрипта, написанного на Lua, вызывалась при старте Фар (ну или сразу после старта), а другая фунция вызывалась при выходе из Фар (непосредственно перед выходом)?
Про выход я знаю, что есть event group "ExitFAR", но не очень представляю, как на нее "подписаться", т.е. зарегистрировать функцию. А про вход я вообще без понятия.
Как выполнить Lua-функцию при запуске / выходе из Фара?
Как выполнить Lua-функцию при запуске / выходе из Фара?
Правильно ли я понимаю, что моей цели легко достичь, создав "полноценный" плагин? Там можно было все сделать в функциях
А нельзя ли сделать (в смысле, создать, если такого еще нет) то же самое с Lua, т.е. создаешь некий скрипт на Lua и говоришь (в некоем дескрипторе): вот эту функцию вызови при загрузке, а эту при выходе.
Или это как раз то, что делает LuaFar? Я как-то все не разберусь, в чем разница между макро, плагином на Lua (есть такие) и LuaFar-плагином.
SetStartupInfoW
и ExitFARW
, которые определены в жизненном цикле плагина.А нельзя ли сделать (в смысле, создать, если такого еще нет) то же самое с Lua, т.е. создаешь некий скрипт на Lua и говоришь (в некоем дескрипторе): вот эту функцию вызови при загрузке, а эту при выходе.
Или это как раз то, что делает LuaFar? Я как-то все не разберусь, в чем разница между макро, плагином на Lua (есть такие) и LuaFar-плагином.
Как выполнить Lua-функцию при запуске / выходе из Фара?
Про старт:
просто в тексте луа файла пишете:
Про выход:
просто в тексте луа файла пишете:
Code: Select all
msgbox("","far загрзил макросы")
Code: Select all
Event
{
group="ExitFAR";
action=function()
--ваш код
end
}
SimSU ··· ·· -- ··· ··-
Как выполнить Lua-функцию при запуске / выходе из Фара?
Спасибо, SUSim! Надо же, как все просто!
И еще (для понимания): "глобальный" код будет выполняться каждый раз при загрузке макроса (точнее, скрипта), так? А событие для "ExitFAR" -- только один раз при выходе из Фар, так? Т.е. теоретически (если вручную выгружать и загружать макро) может получиться так, что "входной" и "выходной" код будет выполнен неодинаковое количество раз. Правильно ли я это понимаю?
Правильно ли я понял, что при старте выполняется весь код, который не является функцией или таблицей, т.е. находится не внутри функции?Про старт: просто в тексте луа файла пишете [...]
И еще (для понимания): "глобальный" код будет выполняться каждый раз при загрузке макроса (точнее, скрипта), так? А событие для "ExitFAR" -- только один раз при выходе из Фар, так? Т.е. теоретически (если вручную выгружать и загружать макро) может получиться так, что "входной" и "выходной" код будет выполнен неодинаковое количество раз. Правильно ли я это понимаю?
Как выполнить Lua-функцию при запуске / выходе из Фара?
Всё это будет выполнятся одинаковое количество раз, как утверждает хелп.
При загрузке выполняется весь код всех скриптов, кроме модулей (например, определения Macro{...} есть ни что иное, как функции, выполняемые при загрузке скриптов их содержащих), а событие "ExitFAR" происходит при выгрузке макросов, то есть, не только при выходе из фара.
При загрузке выполняется весь код всех скриптов, кроме модулей (например, определения Macro{...} есть ни что иное, как функции, выполняемые при загрузке скриптов их содержащих), а событие "ExitFAR" происходит при выгрузке макросов, то есть, не только при выходе из фара.
SimSU ··· ·· -- ··· ··-