Скрипт является панельным модулем, предназначенным заменять временную панель при выводе результатов поиска файлов. Основное отличие - форма вывода информации, максимально приближённая к формату результатов поиска в диалоге поиска Far.
Примечание: функциональность скрипта может не совпадать с функциональностью стандартной временной панели. Дополнительные возможности могут быть добавлены по мере поступления заявок пользователей.
- вызов путём нажатия на кнопку
[ Панель ]
диалога поиска файлов (обычно с последующим выбором пунктаLuaMacro
из меню). В этом режиме файлы из диалога результатов поиска копируются в данную панель и, опционально, во временную панель Far, которая в этом случае опционально может быть открыта на пассивной панели Far. - вызов путём выбора пункта
Панель результатов поиска файлов
из меню плагинов Far
или с помощью клавиатурной комбинацииCtrlShiftT
. Данный способ работает, только если на активной панели Far открыта временная панель. При этом в панель копируются файлы из временной панели, и данная панель открывается в активной панели Far вместо временной.
Требуемая версия Far 3.0.5182+.
- Предрелизные версии можно найти в данной теме ниже.
- Версия 1.0.0 - Первый релиз.
- Версия 1.0.1 - Исправлена ошибка в языковых файлах. Добавлена независимость от расширения файла.
В общем, чтоб не быть голословным (а если честно, просто самому захотелось попробовать сделать), я сляпал простейший панельный модулёк.
- 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
- (1.25 KiB) Downloaded 26 times