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.
Панель для результатов поиска файлов
За счёт чего у Вас более полная информация в тексте красного сообщения?
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Панель для результатов поиска файлов
Подтверждаю. После установки этого модуля содержнание красного сообщения стало .
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Панель для результатов поиска файлов
Повторить не удалось. Попробуйте заменить строки 395-402:
Code: Select all
DRes[#DRes+1] = GetArcInfo(dir..n) or { -- запишем информацию о файле в список, взяв, если получится, из архива, иначе из строки (нет времени)
HostFile = dir:match("(.-\\.*)%:"), -- хост-файл
LastWriteTime = win.SystemTimeToFileTime(FT)-win.FileTimeToLocalFileTime(0), -- дата последнего изменения
FileSize = tonumber(s), -- размер
FileName = dir..n, -- имя файла
AlternateFileName = dir..n, -- альтернативное имя файла пусть совпадает с основным
FileAttributes = a:lower(), -- атрибуты в нижнем регистре
}
Code: Select all
local ft1,ft2 = win.SystemTimeToFileTime(FT),win.FileTimeToLocalFileTime(0)
DRes[#DRes+1] = GetArcInfo(dir..n) or { -- запишем информацию о файле в список, взяв, если получится, из архива, иначе из строки (нет времени)
HostFile = dir:match("(.-\\.*)%:"), -- хост-файл
LastWriteTime = ft1-ft2 --win.SystemTimeToFileTime(FT)-win.FileTimeToLocalFileTime(0), -- дата последнего изменения
FileSize = tonumber(s), -- размер
FileName = dir..n, -- имя файла
AlternateFileName = dir..n, -- альтернативное имя файла пусть совпадает с основным
FileAttributes = a:lower(), -- атрибуты в нижнем регистре
}
- John Doe
- Бюрократ
- Posts: 12966
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 40 times
- Been thanked: 299 times
Панель для результатов поиска файлов
skipik, что если полностью убрать все остальные скрипты.
https://t.me/FarManager — Telegram чат
Панель для результатов поиска файлов
John Doe, https://www.dropbox.com/s/fu7tvt73ardyj ... 12.7z?dl=1
Вот нулёвый фар, только с TmpPanel + StackTracePlus, на котором повторяется.
Вот нулёвый фар, только с TmpPanel + StackTracePlus, на котором повторяется.
- John Doe
- Бюрократ
- Posts: 12966
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 40 times
- Been thanked: 299 times
Панель для результатов поиска файлов
Моя вина. Пропустил запятую. Строка 398 (с патчем) должна выглядеть так (запятая после
ft2
):
Code: Select all
LastWriteTime = ft1-ft2, --win.SystemTimeToFileTime(FT)-win.FileTimeToLocalFileTime(0), -- дата последнего изменения
Панель для результатов поиска файлов
Спросил я совета у старца XeRoX'a об этой незадаче, и вот он так говорит:
Перво-наперво, нужно прочитать "Отче Наш" со смиренным сердцем
И придет разумение, что в UTF8 дьявол прячется окаянный.
Второй дьявол прячется в РегЕкспе, к православной кириллице негодном.
Третий же дьявол в цифирях года сидит,
оные по еретической задумке 4-значные должны быть.
И увещеваю народ православный мануалы от лукаваго и не читать!
Ибо пустое это, лишь молитва спасает
Last edited by citRiks on Thu 13 Feb, 2020 23:05, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Панель для результатов поиска файлов
Паче чаяния, старец ваш в грехе погряз. Ибо UTF8 есмь универсальная кодировка, Богу угодная, а РегЕкспы Божественным Промыслом предвселися, и не висети от святого Кирилла письмен. Иже цифери года и лукавы, то весьма не понеже враг рода человеческого лютует, а поелику грех первородный довлеет над человеками. И негоже взор свой вменяти на ереси и нерадити Писанием.citRiks wrote: ↑Thu 13 Feb, 2020 23:02 Спросил я совета у старца XeRoX'a об этой незадаче, и вот он так говорит:Перво-наперво, нужно прочитать "Отче Наш" со смиренным сердцем
И придет разумение, что в UTF8 дьявол прячется окаянный.
Второй дьявол прячется в РегЕкспе, к православной кириллице негодном.
Третий же дьявол в цифирях года сидит,
оные по еретической задумке 4-значные должны быть.
И увещеваю народ православный мануалы от лукаваго и не читать!
Ибо пустое это, лишь молитва спасает
Last edited by LAT on Fri 14 Feb, 2020 00:41, edited 2 times in total.