Запуск макроса по событию смены директории

Здесь обсуждается всё, что касается макросов.
citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Запуск макроса по событию смены директории

Post by citRiks »

Latest post of the previous page:

Исправлено поведение на плохих directory junctions, зависало насмерть.
Для немедленности "евента" (триггера) надо добавить хоть какие-то content/status columns.
В этом примере используется полезный односимвольный content column,
(изза этого и было зависание, когда он пытался прочитать никуда не ведущий junction)
но можно любой другой, можно фэйковый пустой.
Attachments
ContentColumn+ExitFAREvent_PanelChangeDir.@Xer0X.Lua.7z
(5.08 KiB) Downloaded 20 times
Last edited by citRiks on Thu 25 Jun, 2020 10:22, edited 1 time in total.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

gotar
Posts: 323
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times
Been thanked: 1 time

Запуск макроса по событию смены директории

Post by gotar »

В каком месте надо поменять этот скрипт, чтобы при смене каталога он загружал lua скрипты из этого каталога?

citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Запуск макроса по событию смены директории

Post by citRiks »

gotar,
там есть такая пустая функция:

Code: Select all

local function fnc_evt_dir_chg(evt_data)

end
В нее можно написать ваш код загрузки ваших скриптов, или все что угодно.

BTW
У меня тоже есть код (загрузки скриптов) для этого
(если память не изменяет как раз на основе вашего кода, но я там чего-то еще наулучшал),
но этот код не здесь конечно
Last edited by citRiks on Thu 25 Jun, 2020 12:32, edited 2 times in total.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

gotar
Posts: 323
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times
Been thanked: 1 time

Запуск макроса по событию смены директории

Post by gotar »

Я то думал вызвать far.MacroLoadAll, но хотел бы посмотреть и Ваш код

buniak_a_h
Posts: 1883
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 120 times
Been thanked: 170 times
Contact:

Запуск макроса по событию смены директории

Post by buniak_a_h »

gotar, всё верно, far.MacroLoadAll. Только надо учитывать, что ранее загруженные макросы выгрузятся. Т.е. если Вы хотите, чтоб остались стандартно загруженные, то надо писать нечто тиипа
far.MacroLoadAll(CurrDir .. ';' .. win.GetEnv('FARPROFILE') .. [[\Macros\scripts]])
Впрочем, надо ещё проверить, обрабатываются вложенные папки. У меня был такой скрипт, увы - пропал.
Last edited by buniak_a_h on Thu 25 Jun, 2020 18:49, edited 1 time in total.

buniak_a_h
Posts: 1883
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 120 times
Been thanked: 170 times
Contact:

Запуск макроса по событию смены директории

Post by buniak_a_h »

gotar wrote:
Thu 25 Jun, 2020 11:37
В каком месте надо поменять этот скрипт, чтобы при смене каталога он загружал lua скрипты из этого каталога?
Что-то я затупил…
1. А Вы уверены, что Вам надо именно загружать макросы, а не выполнить некий скрипт, описанный в файле в новой папке?
2. Если Вам надо повесить некий скрипт, зависящий от папки, на одну и ту же клавишу, то это делается проще: пишете один макрос, в condition указываете наличие файла (напр., FolderScript.lua), а в execute - выполнение скрипта, указанного в файле (например, через LoadFile('FolderScript.lua')([параметры])).

gotar
Posts: 323
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times
Been thanked: 1 time

Запуск макроса по событию смены директории

Post by gotar »

Кто нибудь может подтвердить , что far.MacroLoadAll можно безопасно вызывать из обработчика событий редактора?
Last edited by gotar on Sun 12 Jul, 2020 07:33, edited 1 time in total.

citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Запуск макроса по событию смены директории

Post by citRiks »

gotar wrote:
Sun 12 Jul, 2020 07:26
Кто нибудь может подтвердить , что far.MacroLoadAll можно безопасно вызывать из обработчика событий редактора?
Думаю что можно, я вроде постоянно так делал, макросом из редактора,
а обрaботчик событий вроде ничем особенным не отличается от обычного макроса.
gotar wrote:
Thu 25 Jun, 2020 18:12
Я то думал вызвать far.MacroLoadAll, но хотел бы посмотреть и Ваш код
Ответил в более подходящей теме и к тому вашей собственной :)
viewtopic.php?f=15&p=105066#p105066
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

Post Reply

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