Как выполнить Lua-функцию при запуске / выходе из Фара?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Как выполнить Lua-функцию при запуске / выходе из Фара?

Post by fml2 »

Решил попробовать реализовать на Lua идею, описанную здесь (речь идет о копировании файлов в каталоги других экземпляров Фара). Предпосылкой для этого является возможность обмена данными между различными экземплярами Фара. Как предложил zg, собираюсь сделать это с момощью named pipes. Pipe будет создаваться при старте и уничтожаться при выходе из Фар.

Решил все делать на Lua с применением FFI, т.к. это, наверное, проще в смысле инфраструктуры (не надо компилировать, создавать проекты и т.д.).

Вопрос: Как сделать так, чтобы определенная функция из скрипта, написанного на Lua, вызывалась при старте Фар (ну или сразу после старта), а другая фунция вызывалась при выходе из Фар (непосредственно перед выходом)?

Про выход я знаю, что есть event group "ExitFAR", но не очень представляю, как на нее "подписаться", т.е. зарегистрировать функцию. А про вход я вообще без понятия.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Как выполнить Lua-функцию при запуске / выходе из Фара?

Post by fml2 »

Правильно ли я понимаю, что моей цели легко достичь, создав "полноценный" плагин? Там можно было все сделать в функциях SetStartupInfoW и ExitFARW, которые определены в жизненном цикле плагина.

А нельзя ли сделать (в смысле, создать, если такого еще нет) то же самое с Lua, т.е. создаешь некий скрипт на Lua и говоришь (в некоем дескрипторе): вот эту функцию вызови при загрузке, а эту при выходе.

Или это как раз то, что делает LuaFar? Я как-то все не разберусь, в чем разница между макро, плагином на Lua (есть такие) и LuaFar-плагином.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Как выполнить Lua-функцию при запуске / выходе из Фара?

Post by SUSim »

Про старт:
просто в тексте луа файла пишете:

Code: Select all

msgbox("","far загрзил макросы")
Про выход:

Code: Select all

Event
{
  group="ExitFAR";
  action=function()
     --ваш код
  end
}
SimSU ··· ·· -- ··· ··-
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Как выполнить Lua-функцию при запуске / выходе из Фара?

Post by fml2 »

Спасибо, SUSim! Надо же, как все просто!
Про старт: просто в тексте луа файла пишете [...]
Правильно ли я понял, что при старте выполняется весь код, который не является функцией или таблицей, т.е. находится не внутри функции?

И еще (для понимания): "глобальный" код будет выполняться каждый раз при загрузке макроса (точнее, скрипта), так? А событие для "ExitFAR" -- только один раз при выходе из Фар, так? Т.е. теоретически (если вручную выгружать и загружать макро) может получиться так, что "входной" и "выходной" код будет выполнен неодинаковое количество раз. Правильно ли я это понимаю?
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Как выполнить Lua-функцию при запуске / выходе из Фара?

Post by SUSim »

Всё это будет выполнятся одинаковое количество раз, как утверждает хелп.
При загрузке выполняется весь код всех скриптов, кроме модулей (например, определения Macro{...} есть ни что иное, как функции, выполняемые при загрузке скриптов их содержащих), а событие "ExitFAR" происходит при выгрузке макросов, то есть, не только при выходе из фара.
SimSU ··· ·· -- ··· ··-
gotar
Posts: 420
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Как выполнить Lua-функцию при запуске / выходе из Фара?

Post by gotar »

А также при lm:load и при lm:unload
Post Reply

Return to “Нужна помощь”