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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
  if pin.SortMode~=F.SM_NAME then panel.SetSortMode(nil,1,F.SM_NAME) end
  local j,fn0,fn1,st0,ln0,st1,ln1,t0 = 0,"","",0,0,0,0,far.FarClock()
  pc(PANEL_ACTIVE,"FCTL_BEGINSELECTION",0,nil)
  for i=1,pin.ItemsNumber do
    st0,ln0 = st1,ln1
    st1,ln1=StartAndLen(panel.GetPanelItem(nil,1,i).FileName)
    if ln1==ln0 and C.memcmp(st1,st0,ln1)==0 then
      if i>j then pc(PANEL_ACTIVE,"FCTL_SETSELECTION",i-2,pBL) end
      pc(PANEL_ACTIVE,"FCTL_SETSELECTION",i-1,pBL)
      j=i+1
    end
  end
  pc(PANEL_ACTIVE,"FCTL_ENDSELECTION",0,nil)
  pc(PANEL_ACTIVE,"FCTL_REDRAWPANEL",0,nil)
  Keys("ShiftF12")
  msgbox("SDFN","mcs: "..far.FarClock()-t0.."\n\nUse ShiftF12 for sort")
end;
}
 

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 20:04 04-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