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

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

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

Post by buniak_a_h »

Latest post of the previous page:

citRiks wrote: Sat 25 Dec, 2021 18:49 Кастомный скрипт загружается один раз при загрузке самого скрипта макроса
Я Ваш вариант ещё не смотрел, но и в моём он загружался один раз - при загрузке макроса. :-)
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

buniak_a_h wrote: Sat 25 Dec, 2021 19:22 Я Ваш вариант ещё не смотрел
citRiks, посмотрел. Один вопрос и одно замечание.
Вопрос: какой смысл в конструкции do if … end end ? Я окружаю блоком do … end для инкапсуляции переменных внутри блока. Но если есть оператор if, то они и так инкапсулированы. Зачем?
Замечание: Я так понял, что Вы отказались от функции-обработчика смены папки по умолчанию. Тогда, наверно, имеет смысл после чтения fnc_custom_change_proc проверить типа

Code: Select all

if type(fnc_custom_change_proc) ~= 'function' then return
чтобы ни таймер не включался, ни макросы - ивенты не вешались (всё равно работа их - пустая). И, кстати, в операторе объявления локальной переменной fnc_custom_change_proc присвойте, пожалуйста, ей nil. Просто некоторые языки в зависимости от уровня оптимизации очищают значения при инициализации либо не очищают. Если Вы напишете lical fnc_custom_change_proc = nil, то это не только хороший стиль, но и гарантия работоспособности в случае какой-нить другой версии LuaJIT. А вы именно пользуетесь тем фактом, что при отсутствии такого файла в этой переменной должно быть именно nil
User avatar
HaRT
Moderator
Posts: 10854
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
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 wrote: Sat 25 Dec, 2021 19:48какой смысл в конструкции do if … end end ?
А где это у меня такое ? можете указать файл и номер строчки с таким, а то я прям не знаю где углядели
buniak_a_h wrote: Sat 25 Dec, 2021 19:48 чтобы ни таймер не включался, ни макросы - ивенты не вешались (всё равно работа их - пустая).
не, работа таймера не пустая даже если нет юзерсого файла, в таймере проверяется и сохраняется текущee состояниe панелей. при закрытии и открытии ФАР откроется там же так же, это встроенно нативно в ФАРе, не встроено лишь сохранение этой состояния панелей (актив, пассив, текущ. элемент). а я сохраняю через SQLite, чтобы было круто и полезно.
надеюсь мы друг друга поняли? :)
PS
если же вы не хотите автосохранение нативного текущего состояния, то могу только посочуствовать :)
впрочем, это никому мешать недолжно, так как я там наделал там и микро и макро оптимизаций.
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 wrote: Sat 25 Dec, 2021 19:48 Если Вы напишете lical fnc_custom_change_proc = nil, то это не только хороший стиль, но и гарантия работоспособности в случае какой-нить другой версии LuaJIT. А вы именно пользуетесь тем фактом, что при отсутствии такого файла в этой переменной должно быть именно nil
ну можно добавить, но мест где этого не добавлено все равно будет катастрофически больше :)
И как предыдущий оратор отметил, в Луа инициализация будет гарантировано НИЛем.

Aминь
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Sun 26 Dec, 2021 13:47 можете указать файл и номер строчки с таким, а то я прям не знаю где углядели
Я понял. do относится к оператору, написанному строкой выше. Просто форматирование непривычное:

Code: Select all

    for key, val in pairs(evt_data)
    do  if  val
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Sun 26 Dec, 2021 13:53 в Луа инициализация будет гарантировано НИЛем
Хорошо бы всё же придерживаться такого стиля, чтоб luacheck не ругался. По возможности…
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Sun 26 Dec, 2021 13:47 при закрытии и открытии ФАР откроется там же так же, это встроенно нативно в ФАРе
  1. Наверно, запоминать можно и в ивенте ExitFAR. А не писать всё время в базу. Случай закрытия ФАРа крестиком не рассматривается.
  2. Про "встроенно нативно" не понял. Только при включенном автосохранении, а тогда и в этом скрипте запоминать смысла нет.
  3. Ну и интересно, как бы я об этом узнал, если б Вы тут не написали??? Эта вещь абсолютно точно не должна быть безусловной. Или есть какая-то настройка? С текстом разбираться ну совсем неохота - не мой стиль. И наименованию темы противоречит.
Last edited by buniak_a_h on Sun 26 Dec, 2021 14:31, 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 wrote: Sun 26 Dec, 2021 14:24 Хорошо бы всё же придерживаться такого стиля, чтоб luacheck не ругался. По возможности…
ну можно попробовать удовлетворить ЛуаЧек, да ..
buniak_a_h wrote: Sun 26 Dec, 2021 14:30Случай закрытия ФАРа крестиком не рассматривается.
Мне кажется надо бы рассматривать, и падения тоже
buniak_a_h wrote: Sun 26 Dec, 2021 14:30 Или есть какая-то настройка?
кажется что нету, но можно и добавить
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 wrote: Sun 26 Dec, 2021 14:30 Эта вещь абсолютно точно не должна быть безусловной
Кстати, а почему "совершенно точно нет" ?
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Sun 26 Dec, 2021 14:39 Кстати, а почему "совершенно точно нет"
Я сделал сохранение контекста так, но мне это надо точно не всегда.
  1. Иногда надо, чтоб ФАР стартовал в одном и том же (привычном) контексте.
  2. И уж совсем не надо, чтоб восстанавливались какие-то временные пути, случайно оказавшиеся актуальными на момент закрытия.
Именно поэтому я сделал 3-позиционный переключатель: не восстанавливать, восстанавливать, восстанавливать после подтверждения.
Last edited by buniak_a_h on Sun 26 Dec, 2021 14:58, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10854
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
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, HaRT,
пока сделал опциональное сохранение состояние панелей, управляется через STORE_PANEL_PATHS = true/false.
  • микрооптимизации
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks, сдуру скачал последнюю версию (после моих предложений) - тут же получил вылет при загрузке макросов.
Строка:
local Xer0X = Xer0X or require("Lib-Common-@Xer0X")
в самом начале. Ясно, что переменная Xer0X ещё не инициализирована, так что смысл неясен. Но беда не в этом. Нужен модуль. Я его добавил. Полезло:
image.png
Извините, что в графике. Граббер почему-то не работает.
Какое-то неуважение к клиенту. Нет бы собрать всё в одном архиве и выложить здесь - нет, надо лезть на другой сайт, пытаться прочитать сообщение на смешанном языке (в одной строке - «брать из ГитХаба», а далее - «DEPENDS ON THE LUA MODULE:».Ограничиваете аудиторию двуязычними пользователями?
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 wrote: Fri 14 Jan, 2022 00:57скачал последнюю версию (после моих предложений) - тут же получил вылет при загрузке макросов.
починено, спасибо за тестирование
buniak_a_h wrote: Fri 14 Jan, 2022 00:57 Ясно, что переменная Xer0X ещё не инициализирована, так что смысл неясен
Локальная таблица-контeйнeр (для всякого) Xer0X пeрвоначально бeрeтся (инициализируeтся) из глобальной Xer0X. Если в глобальном пространствe ee нeт, то из модуля, что и являeтся оригинальным ee прoисхождeниeм.
buniak_a_h wrote: Fri 14 Jan, 2022 00:57Какое-то неуважение к клиенту
...
.Ограничиваете аудиторию двуязычними пользователями?
Всех кто начинает интересоваться фароводством, надо с самого начала лишать иллюзий что будет легко :) а то потом будут возмущаться и претензии предьявлять уже к другим скриптам, плагинам, и самим фаро-строителям. Вот и хочу их (фаро-строителей) защитить от нападок.
Да, двуязычность это одна из степеней защиты нашего уютного сообщества от внешних угроз.
Кто уже находится здесь, и еще не улетел в бан, знает куда кому и как надо написать чтобы починили.
Или как вы предлагаете держать оборону?
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Fri 14 Jan, 2022 07:43 Локальная таблица-контeйнeр (для всякого) Xer0X пeрвоначально бeрeтся (инициализируeтся) из глобальной Xer0X. Если в глобальном пространствe ee нeт, то из модуля, что и являeтся оригинальным ee прoисхождeниeм.
Я глянул текст модуля и понял, что несмотря на описание local Xer0X где-то имеется в виду локальная, а где-то - глобальная (_G.Xer0X). Причём, без явного указания (_G.). Ну и стиль! От шпионов шифруете? Или байтики экономите?
Last edited by buniak_a_h on Fri 14 Jan, 2022 10:58, edited 1 time in total.
Post Reply

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