Page 2 of 3

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Mon 13 Jan, 2020 21:19
by LAT

Latest post of the previous page:

Я попробовал в SmartMenuFilter.lua после Menu.Filter(lock,1) (строка 54) добавить Menu.Filter(4) ("подправить высоту списка под количество элементов"). Вроде бы стало выглядеть красивше - пустые строки не отображаются. Может, имеет смысл добавить это в оригинальный скрипт? Или пустые строки сделаны специально - чтобы визуально было заметно, что установлен фильтр?

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Tue 14 Jan, 2020 09:17
by John Doe
LAT wrote: Mon 13 Jan, 2020 21:19 Вроде бы стало выглядеть красивше - пустые строки не отображаются.
В процессе фильтрации количество меню уменьшается, и если мы будем подправлять его высоту, то в результате само положение меню будет вынужено измениться, чтобы вновь оказаться в центре экрана.
Как по мне, то получится очень неудобно.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Thu 21 Jan, 2021 15:56
by HaRT
Использую скрипт MenuAutoFilter.lua из архива в шапке. В меню всё работает ожидаемо, а вот в диалоге far:config при переключении фильтрации по CtrlAltF не возникает характерное сообщение auto filter on/off (в двойной рамочке), и, соответственно, режим фильтрации не сохраняется. Но ведь в шапке заявлена поддержка диалога far:config. Это у меня одного не работает?
Far Manager, version 3.0.5718.0 x86, без прочих плагинов и макросов.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Thu 21 Jan, 2021 16:59
by John Doe
HaRT wrote: Thu 21 Jan, 2021 15:56 Это у меня одного не работает?
Это что-то в фаре поменялось, посмотрю при случае.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Thu 21 Jan, 2021 17:21
by Shmuel
John Doe wrote: Thu 21 Jan, 2021 16:59 Это что-то в фаре поменялось

Code: Select all

╔═ Bisect Far builds ══╗
║ Far 3.0.5498 is good ║
║ Far 3.0.5500 is bad  ║
╟──────────────────────╢
║   { OK } [ Copy ]    ║
╚══════════════════════╝
P.S. Скачал и проверил 5499, результат = "good". Следовательно, сломалось в 5500.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Thu 21 Jan, 2021 18:27
by John Doe
Shmuel wrote: Thu 21 Jan, 2021 17:21 Bisect Far builds
Магия!
Как вы это делаете?

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Thu 21 Jan, 2021 18:37
by Shmuel
John Doe, спасибо за комплимент. Магии, конечно нет, есть скрипт и есть большая коллекция скачанных за многие годы билдов Фара. Скрипт получает из диалога (или другого скрипта) исходные данные, затем по очереди распаковывает и запускает билды Фара. В автоматическом режиме (не всегда удаётся) решение о том, был ли билд хорошим или плохим принимает сам скрипт. В обычном режиме решение принимает человек после проверки.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Thu 21 Jan, 2021 18:55
by John Doe
Чрезвычайно полезный скрипт для таких случаев, было бы здорово если бы вы им поделились.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Thu 21 Jan, 2021 19:19
by Shmuel
John Doe wrote: Thu 21 Jan, 2021 18:55 Чрезвычайно полезный скрипт для таких случаев, было бы здорово если бы вы им поделились.
Публиковать скрипты/плагины я прекратил - нет времени на поддержку.
Данный скрипт сильно "заточен" на меня (структуры директорий, набор плагинов и т.д)
Вам, без сомнения, по силам написать подобный скрипт.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Thu 21 Jan, 2021 19:44
by John Doe
Shmuel wrote: Thu 21 Jan, 2021 19:19 Вам, без сомнения, по силам написать подобный скрипт
По силам - возможно, но писать я его в обозримом будущем точно не буду. А готовый на одном любопытстве приспособил бы (несмотря на заточенность).
Shmuel wrote: Thu 21 Jan, 2021 19:19 Публиковать скрипты/плагины я прекратил - нет времени на поддержку.
Многие вещи полезны и как есть, без всякой поддержки.

Но как бы там ни было, позицию вашу принимаю.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Fri 22 Jan, 2021 05:28
by Ann
Shmuel,
John Doe wrote: Thu 21 Jan, 2021 19:44
Shmuel wrote: Thu 21 Jan, 2021 19:19 Публиковать скрипты/плагины я прекратил - нет времени на поддержку.
Многие вещи полезны и как есть, без всякой поддержки.
Очень приветствую данный тезис. Самокритика и критика постепенно утопнут в Лете, а творческая суть, заложенная в достигнутом Вами результате, даст добротный импульс к расцвету вдохновения последователей. Кроме прочего, где-то на этом форуме или на руборде читал, что у Вас есть несколько макросов для редактора Фара. Выкройте, пожалуйста, всё же немного времени для обнародования Вашего скриптового наследия "как есть". Убеждён, что форумчане помогут сообща разобраться, если вдруг что.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Fri 22 Jan, 2021 08:39
by Shmuel
Ann, спасибо за высокую оценку моего скромного труда :)
Тем не менее, есть определённые минимальные стандарты публикации, и привести программу к этим стандартам требует времени.
Ну и кроме того, принято решение, и на решение есть причины.
Что касается моих скриптов или плагинов для редактора и прочих - практически всё выложено: на форуме, на гитхабе, на плагринге.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Fri 22 Jan, 2021 10:33
by John Doe
John Doe wrote: Thu 21 Jan, 2021 16:59 Это что-то в фаре поменялось, посмотрю при случае.
После рефакторинга в 5500 значение Menu.Id полученное вне меню стало строковым значением - "".
Фикс такой:

Code: Select all

--- MenuAutoFilter2.old
+++ MenuAutoFilter2.lua
@@ -39,7 +39,8 @@
 ----
 local function getListId()
   local noid = "00000000-0000-0000-0000-000000000000"
-  local id = Menu.Id or Dlg.ItemType==F.DI_LISTBOX and Dlg.Id
+  local id = Area.Menu and Menu.Id or
+             Dlg.ItemType==F.DI_LISTBOX and Dlg.Id
   id = id==noid and Object.Title or id --??+Dlg.Owner
   return id~="" and id
          or Area.MainMenu and "MAINMENU"

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Fri 22 Jan, 2021 13:02
by Shmuel
John Doe wrote: Fri 22 Jan, 2021 10:33 После рефакторинга в 5500 значение Menu.Id полученное вне меню стало строковым значением - "".
Это любопытно. Проверка показала, что Menu.Id вне меню уже было пустой строкой (ещё до Lua), а стало nil только в одном из билдов диапазона [4693-4695]. Так что, можно сказать, вернулось в исходное состояние.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Fri 22 Jan, 2021 13:21
by HaRT
John Doe wrote: Fri 22 Jan, 2021 10:33Фикс такой:
Теперь работает, спасибо!

И предложение–пожелание: сохранять не только факт включённого фильтра, но и то, какой был фильтр в прошлый раз. Но по умолчанию этот фильтр не выставлять, а применять его только по нажатию, скажем, Backspace при пустом поле фильтра (аналогично AltHistory). Сценарий использования такой: экспериментирую с некой настройкой, пытаясь добиться желаемого поведения; для этого придаю ей разные значения и проверяю поведение — приходится каждый раз, открывая конфигурацию, вводить заново тот же самый фильтр. Тут бы и помогло восстановление запомненного прошлого значения.

SmartMenuFilter — макросы для фильтров меню/списков

Posted: Fri 22 Jan, 2021 13:40
by John Doe
Возьму на заметку.
Однако для вашего случая ещё удобнее было бы запоминать позицию в списке, безо всяких фильтров.