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.
Панель для результатов поиска файлов
Latest post of the previous page:
IgorZ,да, сейчас чудесным образом не тормозит
можешь ли прокомментировать в чем было дело и где сидит изменение?
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Панель для результатов поиска файлов
Избавился от сканирования списка файлов на отсутствующие (раньше делался при каждом запросе списка файлов от Far к модулю, сейчас изменил алгоритм избавления от физически отсутствующих файлов) и выбросил довольно прожорливый (как оказалось) UpdatePanel, который раньше стоял "на всякий случай".
Панель для результатов поиска файлов
Версия 1.2.3 -
- Исправлено чтение файлов с временной панели. Ранее в некоторых случаях могли быть различные случайные глюки. Теперь, вроде, нет.
- А на третий день Зоркий Глаз заметил, что в камере четвёртой стены нет Far передаёт совершенно корректно всю информацию о файлах, найденных в архивах, кроме собственно имени файла. Так что теперь дополнительно к предоставленной Far-ом информации читаются только имена файлов. Нужды в запуске 7zip или принудительной установке колонок списка найденных файлов (а также связанных с этим колдунств) больше нет. Код проще, а информации о файлах в архивах больше (в соответствующих режимах).
- Прочий разный мелкий рефакторинг.
Панель для результатов поиска файлов
5356 — в целом скрипт работает, но есть глюк. для элементов временной панели, открытой из скрипта по AltShiftF5/6, поле UNCPath не пустое (как в обычной временной панели, или как в панели самого скрипта), а заполнено путем к временному файлу Far со списком файлов панели. это нарушает работу скриптов, использующих это поле.
Фар делают добрые люди
Панель для результатов поиска файлов
Это поле заполняет сама временная панель, когда я передаю ей список файлов. Единственный способ передать его - в файле-списке. А когда временная панель заполняется из файла, UNCPath для корневого элемента заполняется полным именем файла-списка. Изменить поведение временной панели - не ко мне. Попробовать придумать какой-нибудь костыль могу, но ничего не гарантирую.ccaid wrote: ↑Mon 10 Aug, 2020 13:275356 — в целом скрипт работает, но есть глюк. для элементов временной панели, открытой из скрипта по AltShiftF5/6, поле UNCPath не пустое (как в обычной временной панели, или как в панели самого скрипта), а заполнено путем к временному файлу Far со списком файлов панели. это нарушает работу скриптов, использующих это поле.
Панель для результатов поиска файлов
IgorZ, я выразился неясно, к сожалению.
в крайней версии Far этой проблемы нет. но поскольку для скрипта заявлен минимальный поддерживаемый билд, то я решил сообщить о своем наблюдении. меня эта проблема в общем-то не задевает. что с ней делать — на ваше усмотрение. если проблема оказалась исправлена в плагине временной панели, то достаточно в требованиях к скрипту скорректировать требуемый билд.
в крайней версии Far этой проблемы нет. но поскольку для скрипта заявлен минимальный поддерживаемый билд, то я решил сообщить о своем наблюдении. меня эта проблема в общем-то не задевает. что с ней делать — на ваше усмотрение. если проблема оказалась исправлена в плагине временной панели, то достаточно в требованиях к скрипту скорректировать требуемый билд.
Фар делают добрые люди
Панель для результатов поиска файлов
Совсем перестал понимать. Опишу результат своих проверок (для TmpPanel v1.2.3).ccaid wrote: ↑Tue 11 Aug, 2020 18:58 IgorZ, я выразился неясно, к сожалению.
в крайней версии Far этой проблемы нет. но поскольку для скрипта заявлен минимальный поддерживаемый билд, то я решил сообщить о своем наблюдении. меня эта проблема в общем-то не задевает. что с ней делать — на ваше усмотрение. если проблема оказалась исправлена в плагине временной панели, то достаточно в требованиях к скрипту скорректировать требуемый билд.
- Версия Far 3.0.5356:
- открытие из
TmpPanel
:..
: UNCPath пуст- любой другой элемент: UNCPath пуст
- открытие обычным способом:
..
: UNCPath пуст- любой другой элемент: UNCPath пуст
- открытие из
- Версия Far 3.0.5649:
- открытие из
TmpPanel
:..
: UNCPath содержит имя файла- любой другой элемент: UNCPath пуст
- открытие обычным способом:
..
: UNCPath пуст- любой другой элемент: UNCPath пуст
- открытие из
К делу не относится, но просто интересно: работу каких скриптов и как именно нарушает поведение TmpPanel?
Панель для результатов поиска файлов
IgorZ, не понял, что такое "обычный способ" и
я сравниваю три варианта:
результат: для сочетания №3+№1 (плагин, открытый из скрипта через AltShiftF5/6 — в билде 5356) UNCPath содержит путь к временному файлу, а в остальных пяти сочетаниях UNCPath — пустой.
TmpPanel
.я сравниваю три варианта:
- плагин Временная панель
- ваш скрипт
- плагин Временная панель, открытый из вашего скрипта через AltShiftF5/6
- 5356
- 5649
..
мне безразличен).результат: для сочетания №3+№1 (плагин, открытый из скрипта через AltShiftF5/6 — в билде 5356) UNCPath содержит путь к временному файлу, а в остальных пяти сочетаниях UNCPath — пустой.
Фар делают добрые люди
Панель для результатов поиска файлов
"Обычный способ" - это без использования
TmpPanel
. Например, AltF1 1
, или набрать tmp:
в командной строке и нажать Enter
. Соответственно, из TmpPanel
- это по AltShiftF5
.
Как нетрудно заметить, для билда 5356 мне вообще не удалось получить непустого UNCPath. Также мне не удалось получить непустого UNCPath для любых элементов списка, кромеccaid wrote: ↑Wed 12 Aug, 2020 08:01 я сравниваю три варианта:
на двух билдах Far:
я смотрю поле UNCPath для некоторого элемента на панели (и элемент..
мне безразличен).
результат: для сочетания №3+№1 (плагин, открытый из скрипта через AltShiftF5/6 — в билде 5356) UNCPath содержит путь к временному файлу, а в остальных пяти сочетаниях UNCPath — пустой.
..
. Возможно, проблема в настройках Временной панели (приведите Ваши, кстати), в сторонних плагинах/скриптах или в каких-то настройках самого Far.P. S. Забыл добавить: я проверял на чистой копии Far (обе версии). Все настройки по-умолчанию, только стандартные плагины, из скриптов только
TmpPanel
и ещё один, для проверки UNCPath
. Его код ниже.
Code: Select all
Macro{
area="Common"; key="F3";
action=function() far.Show(APanel.UNCPath) end;
}
Last edited by IgorZ on Wed 12 Aug, 2020 09:51, edited 4 times in total.
Панель для результатов поиска файлов
IgorZ, воспроизводится на чистой копии Far с чистым, новым локальным профилем. дополнительно удалил стандартные плагины кроме двух нужных. то есть настройки Временной панели — стандартные.
проверочный скрипт использовал и свой аналогичный, и ваш тоже пробовал.
Far x86, Win10 x64
проверочный скрипт использовал и свой аналогичный, и ваш тоже пробовал.
Far x86, Win10 x64
Фар делают добрые люди
Панель для результатов поиска файлов
Очистил заново профиль у обеих тестовых версий (кроме Macros\scripts), удалил все стандартные плагины, кроме LuaMacro и TmpPanel, далее пошагово: запуск, AltF7, Enter, AltP,AltShiftF5,Tab. Проверяю все элементы, включаяccaid wrote: ↑Wed 12 Aug, 2020 11:53 IgorZ, воспроизводится на чистой копии Far с чистым, новым локальным профилем. дополнительно удалил стандартные плагины кроме двух нужных. то есть настройки Временной панели — стандартные.
проверочный скрипт использовал и свой аналогичный, и ваш тоже пробовал.
Far x86, Win10 x64
..
. Home,Enter,AltF2,1. Снова проверяю все элементы.Результат: UNCPath не пустой в единственном случае: билд 5649, элемент
..
, после AltShiftF5.Единственное предположение: у меня Windows XP. Но это, по идее, не должно влиять.
Панель для результатов поиска файлов
Причину нашёл. У меня сборка Far 5356 от 25/01/2019, а Ваша от 04/02/2019 (видимо, долго не было изменений). Соответственно, в моей Временная панель 3.0.106, а у Вас 3.0.107. При добавлении сборки 107 в любую версию Far он начинает вести себя, как Вы описывали, даже Far 3.0.5649. То есть, в сборку 107 внесли изменение, приводящее к заполнению UNCPath, а в более позднюю внесли другое, возвращающее старое поведение для всех элементов, кромеccaid wrote: ↑Wed 12 Aug, 2020 11:53 IgorZ, воспроизводится на чистой копии Far с чистым, новым локальным профилем. дополнительно удалил стандартные плагины кроме двух нужных. то есть настройки Временной панели — стандартные.
проверочный скрипт использовал и свой аналогичный, и ваш тоже пробовал.
Far x86, Win10 x64
..
. Изучение changelog вызвало подозрение, а проверка подтвердила, что второе исправление было в сборке 110, от 14/07/2020. Так что сборки 107-109 Временной панели ведут себя описанным Вами способом, а более ранние и поздние (-яя на данный момент) - нет.Как видим, причина проблемы не у меня. Указывать в качестве минимальной допустимой сборки Far 5641 (а ещё 5640 встречается со сборкой 109) - нерационально. Максимум - могу оговорить это поведение в описании. Ну, или запихать в скрипт костыль, проверяющий версию и переоткрывающий временную панель. Уродливо, в зависимости от режима может очищать содержимое временной панели, но зато пустой UNCPath. Или же перейдите на свежий Far.
Last edited by IgorZ on Fri 14 Aug, 2020 07:59, edited 1 time in total.
Панель для результатов поиска файлов
Полагаю, достаточно добавить примечание, в костыле практического смысла нет. А на свежий Far я уже перешел.
Обнаружил еще один нюанс, о котором полезно знать заранее, чтобы потом не удивляться происходящему.
Панель скрипта TmpPanel для своей работы требует режим сортировки
Обнаружил еще один нюанс, о котором полезно знать заранее, чтобы потом не удивляться происходящему.
Панель скрипта TmpPanel для своей работы требует режим сортировки
Unsorted
и отключенный Show directories first
, а архивные плагины за единственным исключением (у ArcLite можно настроить запоминание своего режима сортировки) наследуют эти режимы из той панели, на которой находится архив. Поэтому, если мы заходим в архив из панели скрипта, то список файлов выглядит не так, как мы ожидаем.Фар делают добрые люди
Панель для результатов поиска файлов
Коллеги, а что вот это такое вылезло в справке данного макроса:
отмечено стрелочкой.
Ради интереса запустил бекап со старой копией Фар 3.0.5689.0 - там нет такого.
UPD: b5716 - исправлено, спасибо.
отмечено стрелочкой.
Ради интереса запустил бекап со старой копией Фар 3.0.5689.0 - там нет такого.
UPD: b5716 - исправлено, спасибо.
Last edited by skipik on Sat 12 Dec, 2020 20:49, edited 1 time in total.
Панель для результатов поиска файлов
у меня такого нету

version 3.0.5687.0 x86
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.