Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 4)

Модерирует : gyra, Maz

Maz (23-11-2017 18:57): FAR Manager (часть 5)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
local F = far.Flags
local ffi = require'ffi'
local C = ffi.C
local BS = string.byte("\\")
 
ffi.cdef[[
int strcmp(const char*, const char*);
char* strrchr(const char*, int);
size_t strlen(const char*);
int memcmp(const void*, const void*, size_t);
]]
 
local function StartAndLen(name)
  local ptr = C.strrchr(name,BS)
  name = ptr==nil and name or ptr+1
  local len = tonumber(C.strlen(name))
  return name,len
end
 
Macro {
description="* Select Duplicates FileName in Branch panel"; name="SDFN"; area="Shell";
action=function()
  local pBL=ffi.cast("BOOL*",1)
  local pc=ffi.cast("struct PluginStartupInfo*",far.CPluginStartupInfo()).PanelControl
  local pin=panel.GetPanelInfo(nil,1)
  if bit.band(pin.Flags,F.PFLAGS_SELECTEDFIRST)>0 then Keys("ShiftF12") end
  pc(PANEL_ACTIVE,"FCTL_SETNUMERICSORT",0,nil)
  pc(PANEL_ACTIVE,"FCTL_SETCASESENSITIVESORT",1,nil)
  if pin.SortMode~=F.SM_NAME then panel.SetSortMode(nil,1,F.SM_NAME) end
  local sid,sel,j,fn0,fn1,st0,ln0,st1,ln1,t0 = 0,{},0,"","",0,0,0,0,far.FarClock()
  pc(PANEL_ACTIVE,"FCTL_BEGINSELECTION",0,nil)
  for i=1,pin.ItemsNumber do
    fn0=fn1
    st1,ln1=StartAndLen(panel.GetPanelItem(nil,1,i).FileName)
    fn1=ffi.string(st1,ln1)
    if fn1==fn0 then
      if i>j then  
        pc(PANEL_ACTIVE,"FCTL_SETSELECTION",i-2,pBL)
        table.insert(sel,{fn0,1})
        sid=1
      end
      pc(PANEL_ACTIVE,"FCTL_SETSELECTION",i-1,pBL)
      j,sid=i+1,sid+1
      sel[#sel][2]=sid
    end
  end
  pc(PANEL_ACTIVE,"FCTL_ENDSELECTION",0,nil)
  pc(PANEL_ACTIVE,"FCTL_REDRAWPANEL",0,nil)
  table.sort(sel,function(a,b) return a[2]>b[2] end)
  local s=""
  for i=1,#sel do s=s..sel[i][2].."\t"..sel[i][1].."\n" end
  fwrite(s,"Z:\\Temp\\Report.txt")
  Keys("ShiftF12")
  msgbox("SDFN","mcs: "..far.FarClock()-t0.."\n\nUse ShiftF12 for sort")
end;
}
 

Всего записей: 3471 | Зарегистр. 16-06-2007 | Отправлено: 10:36 05-05-2016
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 4)
Maz (23-11-2017 18:57): FAR Manager (часть 5)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru