Панель для результатов поиска файлов

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 823
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 100 times

Панель для результатов поиска файлов

Post by IgorZ »

Описание:
Скрипт является панельным модулем, предназначенным заменять временную панель при выводе результатов поиска файлов. Основные отличия:
  • форма вывода информации приближёна к формату результатов поиска в диалоге поиска Far;
  • функциональность скрипта, в отличие от стандартной временной панели, ограничена реальными файлами;
  • работа с файлами внутри архивов.


Требуемая версия Far 3.0.5182+.

Замечание: скрипт передаёт список содержимого плагину "Временная панель" через файл. Сборки плагина 107-109 при заполнении Временной панели содержимым из файла для каждого элемента заполняют APanel.UNCPath полным именем (включая абсолютный путь) файла-списка. Если это может сломать работу Ваших скриптов, используйте сборку Временной панели 106 от более ранней версии Far, а лучше перейдите на Far 3.0.5641+, содержащий Временную панель сборки 110+ с устранённой вышеописанной особенностью.



Attachments
TmpPanel.1.5.0.7z
(19.96 KiB) Downloaded 25 times
Last edited by IgorZ on Fri 23 Jan, 2026 05:58, edited 29 times in total.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Панель для результатов поиска файлов

Post by John Doe »

Latest post of the previous page:

Чего ещё хотелось бы
  • Шорткат для удаления несуществующих файлов
  • Возможность добавлять файл на панель, так чтобы он укладывался в существующую структуру.
    У меня примерно такой юзкейс:
    • Найти файлы по регекспу
    • Добавить к ним соответствующие им парные файлы (скриптом)
https://t.me/FarManager — Telegram чат
IgorZ
Posts: 823
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 100 times

Панель для результатов поиска файлов

Post by IgorZ »

Версия 1.3.6 -
  • Добавлена внутреняяя обработка ShiftF5/ShiftF6. Раньше скрипт полагался в этом на Far.
  • Добавлено удаление с панели по ShiftF7 файлов, отсутствующих на диске. А можно не удалять, а просто посмотреть список отсутствующих.
  • Поправлены найденные ошибки. Новых, вроде, не добавил. :)
John Doe wrote: Mon 14 Oct, 2024 18:07Чего ещё хотелось бы
  • Возможность добавлять файл на панель, так чтобы он укладывался в существующую структуру.
Возможно, будет позже, с ходу не разобрался, как это сделать, а свободного времени не очень много. Пока что можно попробовать такой вариант: переключиться по AltShiftF6 во временную панель, добавить, что надо, и переключиться по AltShiftF6 обратно.
Last edited by IgorZ on Fri 18 Oct, 2024 10:27, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4564
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Панель для результатов поиска файлов

Post by buniak_a_h »

IgorZ wrote: Fri 18 Oct, 2024 10:23 с ходу не разобрался, как это сделать
У меня есть скрипт, помещающий файл на временную панель даже когда эта панель не открыта. Возможно, это Вам поможет.
Last edited by buniak_a_h on Fri 18 Oct, 2024 11:04, edited 2 times in total.
IgorZ
Posts: 823
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 100 times

Панель для результатов поиска файлов

Post by IgorZ »

John Doe wrote: Mon 14 Oct, 2024 18:07Чего ещё хотелось бы
  • Возможность добавлять файл на панель, так чтобы он укладывался в существующую структуру.
Версия 1.4.0 -
  • Добавлено копирование файлов и каталогов на панель по F5/F6. Проверялось копирование с панели файлов и временной панели. Вроде бы работает.
Yegor
Posts: 1505
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Панель для результатов поиска файлов

Post by Yegor »

IgorZ wrote: Fri 25 Oct, 2024 05:03 Проверялось копирование с панели файлов и временной панели.
  1. Запускаю Far
  2. На пассивной панели открываю Temporary Panel (standard)
  3. Перехожу туда и нажимаю AltShiftF6, получаю вашу панель Files search
  4. С корня (важно!) диска копипую файл test.txt в панель Files search
Получаю:

Code: Select all

╔══════════════════════════════════════════════════════════════ Error ══════════════════════════════════════════════════════════════╗
║ C:\Far\Plugins\LuaMacro\LuaMacro.dll:                                                                                             ║
║ C:\Far\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:215: attempt to index local 'I' (a nil value)                                 ║
║ stack traceback:                                                                                                                  ║
║    C:\Far\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:215: in function <C:\Far\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:204> ║
║    [C]: in function 'UpdatePanel'                                                                                                 ║
║    C:\Far\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:539: in function <C:\Far\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:524> ║
╟───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                              { OK }                                                               ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
and CrashLog...
Last edited by Yegor on Sat 26 Oct, 2024 07:43, edited 1 time in total.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Yegor
Posts: 1505
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Панель для результатов поиска файлов

Post by Yegor »

  1. Запускаю Far
  2. На пассивной панели открываю Temporary Panel (standard)
  3. Перехожу туда и нажимаю AltShiftF6, получаю вашу панель Files search
  4. Открываю на другой панели архив и копирую из него файл на панель Files search
Получаю в итоге:

Code: Select all

╔══════════════════════════════════════════════════════════════ Error ══════════════════════════════════════════════════════════════╗
║ C:\Far\Plugins\LuaMacro\LuaMacro.dll:                                                                                             ║
║ C:\Far\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:215: attempt to index local 'I' (a nil value)                                 ║
║ stack traceback:                                                                                                                  ║
║    C:\Far\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:215: in function <C:\Far\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:204> ║
╟───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                              { OK }                                                               ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
IgorZ
Posts: 823
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 100 times

Панель для результатов поиска файлов

Post by IgorZ »

Версия 1.4.1 -
  • Исправлена обработка путей файлов, приводившая к ошибкам.
  • Немного рефакторинга.
В связи с ошибками, описанными в постах выше, настоятельно рекомендую обновить версию 1.4.0 до 1.4.1 (да и предыдущие могут вызывать аналогичные ошибки)!

Yegor wrote: Sat 26 Oct, 2024 07:43
Теперь не должно падать.
Yegor wrote: Sat 26 Oct, 2024 07:57
Тут сложнее, поскольку Far передаёт имя файла, распакованного из архива во временный каталог (а потом удаляет этот файл). Так что, хоть и работает, но результат... на любителя.
Last edited by IgorZ on Mon 28 Oct, 2024 10:37, edited 2 times in total.
Yegor
Posts: 1505
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Панель для результатов поиска файлов

Post by Yegor »

Спасибо.
IgorZ wrote: Mon 28 Oct, 2024 10:29 Так что, хоть и работает, но результат... на любителя.
Согласен, но ругаться не должен и ShiftF7 должен такие файлы обозначить.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
IgorZ
Posts: 823
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 100 times

Панель для результатов поиска файлов

Post by IgorZ »

Yegor wrote: Mon 28 Oct, 2024 16:13 Спасибо.
IgorZ wrote: Mon 28 Oct, 2024 10:29 Так что, хоть и работает, но результат... на любителя.
Согласен, но ругаться не должен и ShiftF7 должен такие файлы обозначить.
Дык, не ругается, обозначает...
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Панель для результатов поиска файлов

Post by John Doe »

При вызове из меню конфигурации плагинов:

Code: Select all

╔═════════════════════════════════════════════════════ Error ═════════════════════════════════════════════════════╗
║ C:\Apps\Far3\Plugins\LuaMacro\LuaMacro.dll:                                                                     ║
║ ...rofile\Macros\scripts\PanelModules\TmpPanel\TmpPanel.lua:588: attempt to index field 'object' (a nil value)  ║
║ stack traceback:                                                                                                ║
║    ...rofile\Macros\scripts\PanelModules\TmpPanel\TmpPanel.lua:588: in function 'action'                        ║
║    C:\Apps\Far3\Plugins\LuaMacro\LuaMacro.lua:517: in function <C:\Apps\Far3\Plugins\LuaMacro\LuaMacro.lua:515> ║
╟─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                     { OK }                                                      ║
╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4564
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Панель для результатов поиска файлов

Post by buniak_a_h »

Подтверждаю. При этом вызов конфига из Scripts browser проходит нормально!
User avatar
buniak_a_h
Posts: 4564
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Панель для результатов поиска файлов

Post by buniak_a_h »

На самом деле у меня возникло несколько вопросов.
  1. В описании MenuItem-а про action написано:
    Поле action – функция… Получает те же аргументы, что и функция export.Open, за исключением Guid
    В описании export.Open написано:
    OpenFrom: integer
    (не написано, что параметр опциональный)
    А в Вашем коде написано:

    Code: Select all

    if OpenFrom then -- открыли панель?
    Получается, что if OpenFrom всегда true. Или всё же бывает вызов с OpenFrom == nil?
  2. Вставил я в эту action контроль OpenFrom. Так вот: при вызове из меню настроек плагинов OpenFrom - string !!! Причем, похожа на какой-то GUID. Конретно: на Guids.MIGuid ! При вызове из меню плагинов (из временной панели) или из меню дисков OpenFrom == 10 (OPEN_RIGHTDISKMENU) или 0 (???). Такая вот странность.

У себя я заменил if из строки 579 на следующую:

Code: Select all

if type(OpenFrom) == 'number' then -- открыли панель?
IgorZ
Posts: 823
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 100 times

Панель для результатов поиска файлов

Post by IgorZ »

John Doe wrote: Fri 21 Feb, 2025 22:59 При вызове из меню конфигурации плагинов:
Читаем справку по системе макросов FAR:
action = function(OpenFrom,Item) ...... end;
Поле action – функция, вызываемая при активации добавленного пункта меню. Получает те же аргументы, что и функция export.Open (см. luafar_manual.chm), за исключением Guid. При вызове из меню конфигурации, значения обоих аргументов – nil. Возвращаемое значение игнорируется.
Добавляем проверку в макрос:

Code: Select all

  action=function(OpenFrom)
require"le"(OpenFrom)
  if OpenFrom then -- открыли панель?
Видим результат:

Code: Select all

   ╔═══════════════ #guid ════════════════╗
   ║ 729E0E44-73DC-4D87-9E30-0769572C2627 ║
   ╟──────────────────────────────────────╢
   ║                { OK }                ║
   ╚══════════════════════════════════════╝
Раньше в строгом соответствии с документацией возвращало nil.

Я, конечно, вставлю костыль, но надо или документацию откорректировать в соответствии с новым поведением, или вернуть старое поведение.
buniak_a_h wrote: Sat 22 Feb, 2025 04:50
Вы невнимательны. Выше процитировал документацию, обратите внимание на выделенное жирным.
Last edited by IgorZ on Fri 28 Feb, 2025 05:04, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4564
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Панель для результатов поиска файлов

Post by buniak_a_h »

IgorZ wrote: Fri 28 Feb, 2025 05:01 Вы невнимательны. Выше процитировал документацию, обратите внимание на выделенное жирным.
Извините, действительно, не дочитал. Но дела не меняет: при вызове из МЕНЮ конфигурации передаётся GUID во внутреннем виде. Лечится как я написал. Ну да, костыль…
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

Панель для результатов поиска файлов

Post by Shmuel »

IgorZ, buniak_a_h
Возвращено прежнее поведение.
IgorZ
Posts: 823
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 100 times

Панель для результатов поиска файлов

Post by IgorZ »

Добавил в первый пост исправленный TmpPanel.lua. Хоть Shmuel и восстановил прежнее поведение, но многие не любят переходить на новые версии. Так что пусть будет.
Post Reply

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