Автофильтр вместо быстрого поиска

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Автофильтр вместо быстрого поиска

Post by John Doe » Mon 22 Dec, 2014 20:53

Предлагаемый набор макросов реализует в панелях автофильтр, применяющийся динамически, по мере набора текста.
В качестве поля ввода используется панель Быстрого поиска (Search).
Автофильтр может использоваться как вместо Быстрого поиска, так и независимо от него.

Использование:
  • Клавиша активации: Alt (одиночное нажатие) в панелях — открывает панельку автофильтра.
    — Если в активной панели в настоящий момент не установлен фильтр, то подставляется маска *.
    — Если панель уже отфильтрована, то подставляется строка активного фильтра (по возможности: ).
  • По умолчанию действия левой и правой клавиши несколько отличаются:
    • LAlt запускает автофильтр в "немодальном" режиме, удобном для использования вместо Быстрого поиска:
      NB! При закрытии панельки (по Esc, или после выполнения какого-либо действия) фильтр панели сразу снимается.
    • RAlt запускает автофильтр в "постоянном" режиме, т.е. фильтр панели панели не сбросится до тех пор, пока пользователь не снимет его явно.
      NB! Для быстрого снятия фильтра достаточно нажать Esc в панелях.
    • Любое из действий (или оба) можно переназначить на другую комбинацию клавиш:
  • В панельке автофильтра действуют те же клавиши, что и при Быстром поиске, в частности:
    Большинство остальных клавиш передаются в панели, выполняя соответствующие действия в панелях, при этом панелька автофильтра закрывается.
    NB: есть возможность задать список клавиш, которые не будут закрывать автофильтр:
Дополнительно:

Credits:
Attachments
PanelAutoFilter.lua.7z
(3.24 KiB) Downloaded 278 times

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

Автофильтр вместо быстрого поиска

Post by fml2 » Wed 24 Dec, 2014 14:17

Замечательный макрос, спасибо! Буду пользоваться! Часто это именно то, что надо.

У меня еще пара предложений есть:

1. (Если возможно) менять заголовочек в окне ввода фильтра в зависимости от текущего режима (сейчас там всегда "Search"). При смене режима высвечивается короткое сообщение, но если режим не меняется?

2. Если в режиме фильтра стереть все символы фильтра, т.е. сделать фильтр пустым, то, по сути, ничего не фильтруется, однако в панели рядом с символом сортировки стоит звездочка -- как будто есть какой-то фильтр. Нельзя ли эту звездочку убирать?

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Автофильтр вместо быстрого поиска

Post by John Doe » Wed 24 Dec, 2014 15:56

fml2 wrote: (Если возможно) менять заголовочек в окне ввода фильтра в зависимости от текущего режима
Поменять заголовок штатной панельки Search невозможно. Но цветом наверно можно поиграть.

Вообще, согласно названия темы, стоит подумать над тем, как не переключать режимы, а всегда пользоваться автофильтром вместо быстрого поиска.
(Тут возможны варианты, пока думаю как лучше)
fml2 wrote: Нельзя ли эту звездочку убирать?
А чем именно она мешает?

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

Автофильтр вместо быстрого поиска

Post by fml2 » Wed 24 Dec, 2014 18:21

John Doe wrote:
fml2 wrote:Source of the post Нельзя ли эту звездочку убирать?

А чем именно она мешает?
Мешает тем, что создает впечатление, что что-то отфильтровано. И надо снова вызавать фильтр, чтобы убедиться, что на самом деле ничего не фильтруется. Ведь со времени последнего редактирования фильтра может пройти какое-то время, после которого я лично уже не буду помнить, что же я там установил при последнем редактировании. Ну или если несколько экземпляров Фара открыто.

Насчет фильтра вместо поиска: я считаю, что если фильтр (а не поиск) устанавливается по умолчанию, то сохранить функцию быстрого поиска можно, но не обязательно. Клавиша переключения режимов достаточно "трудная", так что так, как оно сейчас, вполне неплохо.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Автофильтр вместо быстрого поиска

Post by John Doe » Wed 24 Dec, 2014 21:57

fml2 wrote: Мешает тем, что создает впечатление, что что-то отфильтровано.
А, понял наконец о какой звёздочке речь.
Конечно её не должно быть при пустом фильтре (у меня сейчас на рабочей версии не воспроизводится).
Возможно какой-то другой фильтр включен? Откройте список по CtrlI и поотключайте ненужное.
fml2 wrote: Насчет фильтра вместо поиска:
В следующей версии будет максимально упрощено отключение фильтра, после этого можно действительно попробовать отказаться от быстрого поиска.

Или же оставить быстрый поиск, назначив его (например) на RAlt.
Альтернативно: одна из функций может запускаться если набирать удерживая Alt (а если без удержания, то запускается вторая функция)

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Автофильтр вместо быстрого поиска

Post by John Doe » Wed 24 Dec, 2014 22:11

John Doe wrote: В следующей версии будет максимально упрощено отключение фильтра, после этого можно действительно попробовать отказаться от быстрого поиска.
Чтобы фильтр не путался под ногами, его надо автоматически отключать после любого действия.
Вот думаю, не слишком ли радикально получится...

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

Автофильтр вместо быстрого поиска

Post by fml2 » Thu 25 Dec, 2014 11:27

John Doe wrote:Чтобы фильтр не путался под ногами, его надо автоматически отключать после любого действия.
Вот думаю, не слишком ли радикально получится...
Думаю, будет слишком радикально. Большие изменения без действий пользователя, специально направленных на это.

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

Автофильтр вместо быстрого поиска

Post by fml2 » Thu 25 Dec, 2014 11:34

John Doe wrote: Конечно её не должно быть при пустом фильтре (у меня сейчас на рабочей версии не воспроизводится).
У меня воспроизводится 100%. Запускаем Фар, никакого фильтра (и поэтому звездочки) нету. Нажимаем Alt и начинаем набирать буквы f, o (в моем случае). Список файлов в панели фильтруется, рядом с n (сортировка по имени) появляется звездочка. Не выходя из режима фильтра, стираем набранные буквы f и o. Список файлов становится полным, но звездочка не пропадает. Нажимаем Esc, чтобы убрать поле ввода фильтра. Все остается как было, т.е., по сути, никакого фильтра, но звездочка имеется. При нажатии Ctrl+I вижу такую первую строчку: + _panelfilter_Right │ .............................. ... │ * Это автоматически создаваемый фильтр? Если да, то нельзя ли его как-нибудь более осмысленно назвать?

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Автофильтр вместо быстрого поиска

Post by John Doe » Thu 25 Dec, 2014 11:47

fml2 wrote: Большие изменения без действий пользователя, специально направленных на это.
Мы сейчас рассматриваем фильтр как замену быстрого поиска.
Быстрый поиск немодален, т.е. после перехода на файл и выполнения какого-либо действия наличие фильтра будет неожиданно.

А для "закрепления" фильтра можно выделить свою комбинацию клавиш.
fml2 wrote: У меня воспроизводится 100%
Разбираться со старой версией смысла нет, а в новой этой проблемы не будет.
fml2 wrote: Если да, то нельзя ли его как-нибудь более осмысленно назвать?
Например?

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

Автофильтр вместо быстрого поиска

Post by fml2 » Thu 25 Dec, 2014 13:43

John Doe wrote: Разбираться со старой версией смысла нет, а в новой этой проблемы не будет.
Хорошо, будем ждать новой версии. Тем более, что в нынешней я обнаружил еще одну странность / неинтуитивность.
John Doe wrote: fml2 wrote:Source of the post Если да, то нельзя ли его как-нибудь более осмысленно назвать?

Например?
Может, что-нибудь типа "Быстрый фильтр справа" ("Right ad hoc filter")? Ну и аналогично слева.

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

Автофильтр вместо быстрого поиска

Post by HaRT » Thu 25 Dec, 2014 13:53

fml2 wrote: "Быстрый фильтр справа" ("Right ad hoc filter")
Тогда уж “Right-side ad hoc filter”.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Автофильтр вместо быстрого поиска

Post by John Doe » Thu 25 Dec, 2014 13:57

fml2 wrote: Может, что-нибудь типа "Быстрый фильтр справа" ("Right ad hoc filter")? Ну и аналогично слева.
Мне это всё равно.
Имя настраивается: local filtername="_panelfilter_"
fml2 wrote: в нынешней я обнаружил еще одну странность / неинтуитивность
?

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

Автофильтр вместо быстрого поиска

Post by fml2 » Thu 25 Dec, 2014 18:51

Набираем фильтр "fo". Файлы в панели фильтруются. Выходим из фильтра (нажимаем Esc). Теперь нам хочется отфильтровать файлы, начинающиеся с "g". Нажимаем Alt и, не отпуская ее, набираем g. Появляется поле фильтра, но оно пусто. g туда не вводится (т.к. файлов, начинающихця на "fog" нет?) Выход из ситуации пока такой: нажимаем и отпускаем Alt -- появляется фильтр с "fo". Стираем fo, набираем g.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Автофильтр вместо быстрого поиска

Post by John Doe » Thu 25 Dec, 2014 19:41

fml2 wrote: (т.к. файлов, начинающихця на "fog" нет?)
Потому что на текущей уже отфильтрованной панели нет файлов, содержащих g.
fml2 wrote: Нажимаем Alt и, не отпуская ее, набираем g.
Все возможные комбинации с Alt перехватывать мы не станем, поэтому надо предварительно сбросить имеющийся фильтр.
В следующей версии для этого будет достаточно нажать Esc в панелях.

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

Автофильтр вместо быстрого поиска

Post by fml2 » Thu 25 Dec, 2014 20:43

John Doe wrote: Потому что на текущей уже отфильтрованной панели нет файлов, содержащих g.
Это объяснение сошло бы, если бы ввод фильтра при уже действующем фильтре фильтровал бы "повторно" (или "дополнительным уровнем"). Но это не так: если при имеющемся фильтре "fo" ввести фильтр "*2", то показаваются все файлы на панели, имеющие 2 в имени, а не только те, что начинаются с "fo" и содержат 2.

Дождемся новой версии, зачем обсуждать уже не существующие?

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Автофильтр вместо быстрого поиска

Post by John Doe » Thu 25 Dec, 2014 21:01

fml2 wrote: Дождемся новой версии, зачем обсуждать уже не существующие?
В данном случае речь о функционировании штатной панели быстрого поиска.
fml2 wrote: Это объяснение сошло бы, если бы ввод фильтра при уже действующем фильтре фильтровал бы "повторно"
Обратите внимание, что Alt-<символ> активирует быстрый поиск.
Скрипт фильтра ничего тут не делает, т.к. ему ещё неизвестно, что открыт быстрый поиск.

Если так не устраивает, то можно пойти 2мя разными путями
  • активировать фильтр только выделенной комбинацией (например одиночным нажатием Alt)
    А при нажатии комбинаций Alt-символ оставить штатную функцию быстрого поиска.
  • альтернативно: в отдельной нити по таймеру опрашивать текущую макрообласть, и при обнаружении открытого быстрого поиска подставлять в поле строку фильтра

Post Reply

Return to “Полезные макросы и скрипты”