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

Здесь обсуждается всё, что касается макросов.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Индивидуальные преднастройки для сортировки конкретных каталогов

Post by buniak_a_h »

Latest post of the previous page:

citRiks wrote: Fri 15 Jan, 2021 21:50 Здесь все прекрасно и уже давно работает, (почти) без таймера, без загрузки CPU:
Я пытался посмотреть, наткнулся на макрос, повешенный на Enter - и это меня срубило. Возможно, теперь этого уже нету, но было.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Индивидуальные преднастройки для сортировки конкретных каталогов

Post by citRiks »

buniak_a_h, весьма и весьма согласен что макрос на Enter это безобразие.
Но конкретно здесь, этот макрос - он как бы обманка, condition всегда возвращает false.
Но зато при этом, без всяких посторнних эффектов,
в condition мы получаем индикацию что возможно была смена директории,
и далее проверяем это в таймере.
Таким образом, это одноразовый "умный" таймер, а не который постоянно долбится глупый.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Индивидуальные преднастройки для сортировки конкретных каталогов

Post by buniak_a_h »

А если смена папки возникает в результате исполнения скрипта?
Вы видели моё панельное дерево. Там есть авто-смена папки при "шагании" по дереву. Будет отрабатывать Ваш макрос? А при far.Host.SetDirectory,
panel.SetPanelDirectory, whereis:имя_файла?
Last edited by buniak_a_h on Fri 15 Jan, 2021 23:58, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Индивидуальные преднастройки для сортировки конкретных каталогов

Post by buniak_a_h »

P/S. По поводу whereis: : я так часто этим пользуюсь, что замакросил по одному хоткею в начало строки вставляется whereis:, а потом Keys"End Enter". Будет работать?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Индивидуальные преднастройки для сортировки конкретных каталогов

Post by citRiks »

buniak_a_h wrote: Fri 15 Jan, 2021 23:57 А если смена папки возникает в результате исполнения скрипта?
Эммм.. там основной механизм это ContentColumn.
Надо чтобы был какой-нибудь любой ContentColumn
Потому что ContentColumn реагирует на любое изменение при любом переходе,
и к нему можно приделать реакцию на переход
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Индивидуальные преднастройки для сортировки конкретных каталогов

Post by citRiks »

buniak_a_h wrote: Sat 16 Jan, 2021 00:04 что замакросил по одному хоткею в начало строки вставляется whereis:, а потом Keys"End Enter". Будет работать?
Есть подозрение что будет работать и без ContentColumn, если вышлите макрос то проверю
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Индивидуальные преднастройки для сортировки конкретных каталогов

Post by buniak_a_h »

citRiks wrote: Sat 16 Jan, 2021 09:15 если вышлите макрос то проверю
Макрос изначально был клавиатурным, потом переписан в стационарные:
  1. Macro {
  2.  
  3.   area="Shell"; key="CtrlShiftW"; Description="WhereIs:..."; flags="NotEmptyCommandLine";
  4.  
  5.   action = function()
  6.  
  7.   Far.DisableHistory(1)
  8.  
  9.  Keys('CtrlHome w h e r e i s : Enter')
  10.  
  11.   end;
  12.  
  13. }
Last edited by buniak_a_h on Sat 16 Jan, 2021 09:51, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Индивидуальные преднастройки для сортировки конкретных каталогов

Post by citRiks »

buniak_a_h, проверил, все правильно и мгновенно детектиться, без таймера и без ContentColumn
все же я рекомендую ContentColumn и постоянный таймер раз в две секунды для перестраховки
Last edited by citRiks on Sat 16 Jan, 2021 10:25, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Novosedoff wrote: Mon 18 Jan, 2021 01:56 Спасибо за наводку. Только, боюсь, моей технической квалификации недостаточно, чтобы понять как пользоваться указанным скриптом для моей задачи, а инструкция к скрипту, кроме деталей по установке, никаких дополнительных деталей, к сожалению, не даёт..
я когда-нибудь (надеюсь в течении месяца) доберусь допилить туда сохраняемые настройки, делов там очень мало, толко у меня и времени к сожалению еще меньше
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Mon 18 Jan, 2021 20:42
Novosedoff wrote: Mon 18 Jan, 2021 01:56 …моей технической квалификации недостаточно, чтобы понять как пользоваться указанным скриптом…
Кстати, моей - тоже.
citRiks wrote: Mon 18 Jan, 2021 20:42 я когда-нибудь (надеюсь в течении месяца) доберусь допилить туда сохраняемые настройки, делов там очень мало, толко у меня и времени к сожалению еще меньше
Можно без крутой настройки обойтись. Проверять файл с именем ContentColumn+ExitFAREvent_PanelChangeDir.@Xer0X.Lua.action в той же папке, что и сам ContentColumn+ExitFAREvent_PanelChangeDir.@Xer0X.Lua, примерно такого содержания:

Code: Select all

return
function(tbl_evt_data)
  if tbl_evt_data.chg_path_L then … end
  if tbl_evt_data.chg_path_R then … end
end
Так примерно …
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

citRiks, Ну, я проверил - замечательно срабатывает.
В Ваш скрипт после функции fnc_evt_dir_chg надо добавить несколько строчек:

Code: Select all

if mf.fexist(sz_own_file .. '.action') then
  local ff = loadfile(sz_own_file .. '.action')
  if type(ff) == 'function' then
    ff = ff()
    if type(ff) == 'function' then
      fnc_evt_dir_chg = ff
    end
  end
end
По-моему, оно того стоит, чтоб включить в текст скрипта.
Last edited by buniak_a_h on Fri 24 Dec, 2021 17:45, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

buniak_a_h,
да, спасибо, ввиду накопления общественного интереса так и надо сделать.
ПС
Вроде промелькнуло что вы сами эту прибавку добавили к моему скрипту.
Если да, - то ткните снова где это чтобы я обновил сразу в ГитХабе
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Sat 25 Dec, 2021 14:24 Вроде промелькнуло что вы сами эту прибавку добавили к моему скрипту.
Если да, - то ткните снова где это чтобы я обновил сразу в ГитХабе
Тут написал. Имя файла, есессно, некрасивое, дело вкуса. Ну и коммент надо бы добавить с инструкцией
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

buniak_a_h,
Немного рефакторинга, причесывания, и добавленно вами предложенное
Кастомный скрипт загружается один раз при загрузке самого скрипта макроса
https://github.com/dr-dba/far-lua-direc ... ange-event
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Sat 25 Dec, 2021 18:49 Кастомный скрипт загружается один раз при загрузке самого скрипта макроса
Я Ваш вариант ещё не смотрел, но и в моём он загружался один раз - при загрузке макроса. :-)
Post Reply

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