IgorZ wrote: ↑Wed 17 Apr, 2019 12:26 Описание:
Скрипт является панельным модулем, предназначенным заменять временную панель при выводе результатов поиска файлов. Основные отличия
- форма вывода информации приближёна к формату результатов поиска в диалоге поиска Far.
- функциональность скрипта, в отличие от стандартной временной панели, ограничена реальными файлами.
- вызов путём нажатия на кнопку
[ Панель ]
диалога поиска файлов (обычно с последующим выбором пунктаLuaMacro
из меню). В этом режиме файлы из диалога результатов поиска копируются в данную панель и, опционально, во временную панель Far, которая в этом случае опционально может быть открыта на пассивной панели Far.- вызов путём выбора пункта
Панель результатов поиска файлов
из меню плагинов/дисков Far
или с помощью клавиатурной комбинацииAltShiftF6
(только при активной временной панели). Данный способ работает, если на активной панели Far открыта временная панель (при этом в панель копируются файлы из временной панели, и данная панель открывается в активной панели Far вместо временной), или если данная панель уже открывалась и была закрыта(открывается на активной панели с предыдущим содержимым).
Требуемая версия Far 3.0.5182+.
Замечание: скрипт передаёт список содержимого плагину "Временная панель" через файл. Сборки плагина 107-109 при заполнении Временной панели содержимым из файла для каждого элемента заполняютAPanel.UNCPath
полным именем (включая абсолютный путь) файла-списка. Если это может сломать работу Ваших скриптов, используйте сборку Временной панели 106 от более ранней версии Far, а лучше перейдите на Far 3.0.5641+, содержащий Временную панель сборки 110+ с устранённой вышеописанной особенностью.
- Предрелизные версии можно найти в данной теме ниже.
- Версия 1.0.0 - Первый релиз.
- Версия 1.0.1 - Исправлена ошибка в языковых файлах. Добавлена независимость от расширения файла.
- Версия 1.1.0 - Добавлена стандартная обработка F5/ShiftF5/F6/ShiftF6/F8/ShiftF8/ShiftDel/AltDel/Enter/CtrlPgDn. Добавлена обработка AltShiftF3 (перейти на файл под курсором в пассивной панели), AltF5 (скопировать на пассивную панель с учётом путей), AltF6 (перенести на пассивную панель с учётом путей), AltShiftF5 (скопировать содержимое панели на временную и открыть её на пассивной панели), AltShiftF6 (скопировать содержимое панели на временную и открыть её активной панели вместо данной), F7 (убрать файл с панели, не трогать на диске). При выделении каталога вместо него выделяются все файлы в нём и его подкаталогах. После закрытия список файлов сохраняется и восстанавливается при повторном открытии через меню дисков/плагинов. Добавлен неполноэкранный режим панели. Пункт добавлен в меню дисков. Рефакторинг.
- Версия 1.1.1 - Исправлены две обнаруженные ошибки.
- Версия 1.2.0 - Показываются результаты поиска в архиве.
- Версия 1.2.1 - Настройка использования 7zip. Обработка F3/F4/F5/F6/F7/F8/Del в архивах. Исправление обнаруженных ошибок. Рефакторинг.
- Версия 1.2.2 - Опциональная принудительная настройка колонок для списка результатов поиска. Рефакторинг.
- Версия 1.2.3 - Исправлено чтение файлов с временной панели. Рефакторинг.
В общем, чтоб не быть голословным (а если честно, просто самому захотелось попробовать сделать), я сляпал простейший панельный модулёк.Во вложении он же в архиве.
local F = far.Flags local Title ="TmpPanel" local DirSortMode PanelModule{ Info={ Guid=win.Uuid("BA461384-095B-4D0F-AA87-07365A0E2AF6"); Title=Title; Description="Временная панель, как окно поиска"; Version="0.1"; Author="IgorZ"; }; -- Open=function(OpenFrom) if OpenFrom==F.OPEN_FINDLIST then DirSortMode = band(panel.GetPanelInfo(nil,1).Flags,F.PFLAGS_DIRECTORIESFIRST)~=0 return {} end end; -- SetFindList=function(object,_,Items) object.List = Items return true end; -- GetFindData=function (object) local Items = {win.GetFileInfo(object.List[1].FileName:match("^(.*)\\[^\\]*$"))} Items[1].FileName = far.ConvertPath(Items[1].FileName,F.CPM_FULL) for _,PI in ipairs(object.List) do Items[#Items+1] = { LastWriteTime = PI.LastWriteTime, LastAccessTime = PI.LastAccessTime, CreationTime = PI.CreationTime, ChangeTime = PI.ChangeTime, FileSize = PI.FileSize, AllocationSize = PI.AllocationSize, FileName = PI.FileAttributes:match("d") and PI.FileName or " "..PI.FileName:match("[^\\]*$"), AlternateFileName = PI.AlternateFileName, FileAttributes = PI.FileAttributes, Flags = PI.Flags, NumberOfLinks = PI.NumberOfLinks, CRC32 = PI.CRC32, Description = PI.Description, Owner = PI.Owner, CustomColumnData = PI.CustomColumnData, UserData = PI.UserData, } end return Items end; -- GetOpenPanelInfo=function() return { Flags = F.OPIF_DISABLEFILTER+F.OPIF_DISABLESORTGROUPS+F.OPIF_ADDDOTS+F.OPIF_REALNAMES; PanelTitle = Title; PanelModesArray = {{ ColumnTypes = "D,T,S,A,N"; ColumnWidths = "10,8,0,0,0"; StatusColumnTypes = "N"; StatusColumnWidths = "0"; Flags = F.PMFLAGS_FULLSCREEN; }}; PanelModesNumber = 1; StartPanelMode = "1"; StartSortMode = F.SM_UNSORTED; StartSortOrder = 0; ShortcutData = ""; } end; -- ProcessPanelEvent=function(_,_,Event) if Event==F.FE_GOTFOCUS then panel.SetDirectoriesFirst(nil,1) end return false end; -- ProcessPanelInput=function(object,_,rec) if rec.EventType== F.KEY_EVENT and APanel.CurPos>2 and not object.List[APanel.CurPos-2].FileAttributes:match("d") then if rec.VirtualKeyCode==0x73 and band(rec.ControlKeyState,0x1f)==0 then local fn = object.List[APanel.CurPos-2].FileName editor.Editor(fn) object.List[APanel.CurPos-2] = win.GetFileInfo(fn) panel.UpdatePanel(nil,1,true) return true end end return false end; -- ClosePanel=function() panel.SetDirectoriesFirst(nil,1,DirSortMode) end; }GeSHi © Codebox Plus Extension
Как использовать: кладём в папку scripts, перезапускаем Far (или просто перезагружаем макросы), набираем в нужном каталогеAltF7
, после завершения сканирования жмём[Панель]
, выбираем плагин LuaMacro и получаем результат. В данной версии предусмотрено только редактирование файлов поF4
, это, по сути, демка.
TmpPanel.lua.7z
Панель для результатов поиска файлов
Панель для результатов поиска файлов
IgorZ wrote: ↑Wed 17 Apr, 2019 12:26 Описание:
Скрипт является панельным модулем, предназначенным заменять временную панель при выводе результатов поиска файлов. Основные отличия
- форма вывода информации приближёна к формату результатов поиска в диалоге поиска Far.
- функциональность скрипта, в отличие от стандартной временной панели, ограничена реальными файлами.
Требуемая версия Far 3.0.5182+.
Замечание: скрипт передаёт список содержимого плагину "Временная панель" через файл. Сборки плагина 107-109 при заполнении Временной панели содержимым из файла для каждого элемента заполняютAPanel.UNCPath
полным именем (включая абсолютный путь) файла-списка. Если это может сломать работу Ваших скриптов, используйте сборку Временной панели 106 от более ранней версии Far, а лучше перейдите на Far 3.0.5641+, содержащий Временную панель сборки 110+ с устранённой вышеописанной особенностью.
- Attachments
-
- TmpPanel.1.2.3.7z
- (12.73 KiB) Downloaded 97 times
Last edited by IgorZ on Tue 18 Aug, 2020 07:14, edited 16 times in total.
-
- Posts: 2247
- Joined: Sat 20 Apr, 2013 00:17
- Location: Питер
- Has thanked: 133 times
- Been thanked: 241 times
- Contact:
Панель для результатов поиска файлов
John Doe, извините, не догоняю. Как это будет выглядеть с точки зрения юзера? Добавить горячую клавишу типа "дозаполнить время"? На самом деле идея была такая: HaRT хотел, чтоб была возможность сортировать по времени - ему надо с включенной тулзой. Если сортировать по времени не требуется - не надо . О! Может, если требуется сортировка по времени, тогда и дозаполнять?
1. Наверное, было бы намного эффективнее, если бы ArcLite умел выполнять команду list. Увы, уговорить автора не удалось. Когда-то я уговорил его сделать выгрЫзку одного файла (или по списку) из архива - это уже может пригодиться.
2. Можно бы, наверно, сделать дозаполнение времени в таймерном цикле. Хотя не уверен, стоит ли овчинка выделки.
1. Наверное, было бы намного эффективнее, если бы ArcLite умел выполнять команду list. Увы, уговорить автора не удалось. Когда-то я уговорил его сделать выгрЫзку одного файла (или по списку) из архива - это уже может пригодиться.
2. Можно бы, наверно, сделать дозаполнение времени в таймерном цикле. Хотя не уверен, стоит ли овчинка выделки.
-
- Posts: 2247
- Joined: Sat 20 Apr, 2013 00:17
- Location: Питер
- Has thanked: 133 times
- Been thanked: 241 times
- Contact:
Панель для результатов поиска файлов
Ну и, видимо, последняя версия (интереса к копированию / просмотру / редактированию внутриархивных файлов не замечено, и ладно).
Заполнение времени сделано "в фоне" (по таймеру). Хотя моя добавка к настройке становится лишней, но убирать её не стал.
Суть в том, что после формирования списка вложенных (архивированных) файлов инициируется таймер, который при каждом срабатывании заполняет время для файлов одного архива, а панель тем временем показана и работает. С некоей периодичностью содержимое панели обновляется (с учётом уже заполненных к этому моменту данных о времени вложенных файлов). По окончании процесса панели опять обновляются.
Период таймера и частоту обновления содержимого панелей подобрал "от балды"; работает и ладно.
Заполнение времени сделано "в фоне" (по таймеру). Хотя моя добавка к настройке становится лишней, но убирать её не стал.
Суть в том, что после формирования списка вложенных (архивированных) файлов инициируется таймер, который при каждом срабатывании заполняет время для файлов одного архива, а панель тем временем показана и работает. С некоей периодичностью содержимое панели обновляется (с учётом уже заполненных к этому моменту данных о времени вложенных файлов). По окончании процесса панели опять обновляются.
Период таймера и частоту обновления содержимого панелей подобрал "от балды"; работает и ладно.
Панель для результатов поиска файлов
Удаляет. Просто не обновляет панель, и тут я ещё думаю, как лучше сделать.buniak_a_h wrote: ↑Mon 16 Dec, 2019 15:30Если Вы имеете в виду панель для показа результатов поиска, то не согласен:
1. Удаление ФАР не делает, надо реализовывать экспортируемую функцию;
Запишу на будущее.buniak_a_h wrote: ↑Mon 16 Dec, 2019 15:30 2. Отметку ([Ins]
на строке с "корневым" каталогом) - хочется, чтоб отмечались все файлы в этой папке
Сделаю, но чуть позже. Сейчас, похоже, опять работа навалится, так что доделаю начатое и выложу.buniak_a_h wrote: ↑Mon 16 Dec, 2019 15:30 3. Вас JD просил сделать "внутренние" файлы. Если сделаете (я там, вроде, почти сделал - кроме случая когда архив единственный (ошибка в бинарном поиске)), то просмотр/редактирование тоже придётся делать самому.
В этой - уместно.buniak_a_h wrote: ↑Mon 16 Dec, 2019 15:30 Правда, я не знаю, насколько уместно обсуждение Вашего же панельного модуля в этой теме.

Панель для результатов поиска файлов
Версия 1.1.0 -
- Добавлена стандартная обработка
F5
/ShiftF5
/F6
/ShiftF6
/F8
/ShiftF8
/ShiftDel
/AltDel
/Enter
/CtrlPgDn
. Клавиши, которые поддерживались и раньше, не перечислены. - Добавлена обработка:
AltShiftF3
- перейти на файл под курсором в пассивной панели (как во Временной панели),AltF5
- скопировать файл(ы) с учётом путей,AltF6
- перенести файл(ы) с учётом путей,AltShiftF5
- скопировать содержимое панели на временную и открыть её на пассивной панели,AltShiftF6
- скопировать содержимое панели на временную и открыть её активной панели вместо данной (также работает обратная операция),F7
- убрать файл с панели, не трогать на диске (как во Временной панели).
- При выделении каталога вместо него выделяются все файлы в нём и его подкаталогах.
- После закрытия список файлов сохраняется и восстанавливается при повторном открытии через меню дисков/плагинов.
- Добавлен неполноэкранный режим панели (
LCtrl9
- неполноэкранный,LCtrl0
- полноэкранный). - Пункт добавлен в меню дисков.
- Рефакторинг.
Панель для результатов поиска файлов
Что-то не хочет у меня работать версия 1.1.0.
При запуске фара выдаёт следующее:
Проверялось в версиях Фар 3.0.5530, 3.0.5532, 3.0.5528, 3.05511.
Версии фара 64-битные, Win10.
При запуске фара выдаёт следующее:
Code: Select all
╔═════════════════════════════════════════════════════ LuaMacro ═════════════════════════════════════════════════════╗
║ ...Far Manager\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:45: attempt to index local 'Info' (a function value) ║
║ stack traceback: ║
║ ...Far Manager\Profile\Macros\scripts\TmpPanel\TmpPanel.lua:45: in main chunk ║
║ [C]: in function 'xpcall' ║
║ C:\Program Files\Far Manager\Plugins\LuaMacro\utils.lua:774: in function <C:\Program Files\Far Manager\Plugins\ ║
║ LuaMacro\utils.lua:751> ║
║ [C]: in function 'RecursiveSearch' ║
║ C:\Program Files\Far Manager\Plugins\LuaMacro\utils.lua:843: in function <C:\Program Files\Far Manager\Plugins\ ║
║ LuaMacro\utils.lua:674> ║
╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║ { OK } [ Edit ] ║
╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Версии фара 64-битные, Win10.
Панель для результатов поиска файлов
Shmuel,
Спасибо за подсказку. После исправления скрипт стал рабочим.
Спасибо за подсказку. После исправления скрипт стал рабочим.
При попытке AltShiftF3 на любом файле вылезает ошибка.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Панель для результатов поиска файлов
Поменять Info на nfo помогло.
А с AltShiftF3 тоже постоянно такая же ошибка вылезает. Причём после того, как нажмёшь OK в этом окошке (Enter), то иногда пассивная панель меняется на нужную папку, иногда нет. Закономерности так и не понял пока. Но в любом случае объявленное поведение «перейти на файл под курсором в пассивной панели» не работает: если папка и поменялась на нужную, то курсор точно не на нужном файле стоит.
А с AltShiftF3 тоже постоянно такая же ошибка вылезает. Причём после того, как нажмёшь OK в этом окошке (Enter), то иногда пассивная панель меняется на нужную папку, иногда нет. Закономерности так и не понял пока. Но в любом случае объявленное поведение «перейти на файл под курсором в пассивной панели» не работает: если папка и поменялась на нужную, то курсор точно не на нужном файле стоит.
Панель для результатов поиска файлов
Версия 1.1.1 -
- Исправлены две обнаруженные ошибки. Одна проявлялась только у того, у кого не установлен модуль
regscript
. Другая - непонятно, как оно раньше работало у меня. Ибо не должно было. Точнее, в принципе, могло, но вовсе не обязано было.

Панель для результатов поиска файлов
интерес конечно есть, и у тех кто не отписался уверен что то жеbuniak_a_h wrote: ↑Mon 16 Dec, 2019 22:57 Ну и, видимо, последняя версия (интереса к копированию / просмотру / редактированию внутриархивных файлов не замечено, и ладно).
люди просто или не могут мониторить ваши/наши общения на эту тему,
или не считают возможным отстаивать свои хотелки, это дело тоже в своем роде неблагодарное.
и еще я уверен что такие вещи должны в стандартную поставку входить для юзабельности
Панель для результатов поиска файлов
buniak_a_h,
Например, у меня долгое время и сейчас есть бэкапирование кода в архив, это не СВН,
но тем не менее исторически я это запилил и пользуюсь с удовольствием.
недостаток - что копии сидят в архиве, и отсюда некоторое значительное неудобство.
даже поик в архивах какое-то время у меня не работал "искаропки" почему-то.
терпел, молчал, не было времени разбираться
Ну мораль в общем, если нарот молчит, это не значит что не нужно.
То что "искаропки", между нами говоря, печаль-беда сплошь и рядом, допиливать надо, спасибо что допиливаете,
и не меньшее спасибо фарокодерам что АПИ и скриптинг ФАРа позволяют это
Например, у меня долгое время и сейчас есть бэкапирование кода в архив, это не СВН,
но тем не менее исторически я это запилил и пользуюсь с удовольствием.
недостаток - что копии сидят в архиве, и отсюда некоторое значительное неудобство.
даже поик в архивах какое-то время у меня не работал "искаропки" почему-то.
терпел, молчал, не было времени разбираться
Ну мораль в общем, если нарот молчит, это не значит что не нужно.
То что "искаропки", между нами говоря, печаль-беда сплошь и рядом, допиливать надо, спасибо что допиливаете,
и не меньшее спасибо фарокодерам что АПИ и скриптинг ФАРа позволяют это
Last edited by Xerox on Tue 31 Dec, 2019 14:16, edited 1 time in total.
Панель для результатов поиска файлов
Версия 1.2.0 -
- Показываются результаты поиска в архиве. Пока только показываются. Файлы в архиве помечены знаком
§
(он мне показался подходящим для пометки чего-то сжатого).
Last edited by IgorZ on Fri 10 Jan, 2020 10:33, edited 1 time in total.
Панель для результатов поиска файлов
Качал после постскриптума об ошибке и обнуления счётчика. Однако, выдаёт .
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.