LoadCustomSortMode
Panel.LoadCustomSortMode (Mode, Settings)
Параметры:
Mode: режим сортировки, целое число >=100 и <=0x7FFFFFFF
Settings: таблица, содержит следующие поля:
Condition:
Функция. Если задана, то будет вызвана с одним аргументом - режим сортировки.
Если возвращаемое значение ложно, то сортировка отменяется.
Следует отметить, что данная функция может перезагрузить все параметры сортировки,
снова вызвав Panel.LoadCustomSortMode().
Compare:
Функция, см. её описание ниже.
DirectoriesFirst, SelectedFirst, RevertSorting, SortGroups:
Данные опциональные поля задают соответствующие опции сортировки:
0 - опция выключена, 1 - опция включена, любое другое значение
или отсутствие данного поля означают "использовать текущую
установку Far Manager".
InvertByDefault:
Включать ли по умолчанию обратную сортировку.
Indicator:
Индикация режима сортировки на панели, строка из двух символов
(первый - для прямой, второй - для обратной сортировки).
NoSortEqualsByName:
По умолчанию, равные с точки зрения алгоритма сортировки элементы
сортируются по имени. Если это нежелательно, установите данное поле
в true.
Description:
Текстовое описание режима сортировки. Если данное поле задано,
оно используется в меню (см. Panel.CustomSortMenu).
SortFunction:
Опция выбора функции сортировки из двух встроенных.
Задаётся строкой: "shellsort" (значение по умолчанию) или "qsort".
InitSort:
Функция. Если задана, то вызывается перед началом сортировки.
Получает один параметр: таблицу FarOptions (см. ниже одноимённый
параметр функции Compare).
EndSort:
Функция. Если задана, то вызывается после окончания сортировки.
Если значение Settings равно nil или false, это означает выгрузку
(удаление) данного режима сортировки.
Возвращает:
Ничего
Описание:
Функция загружает (или выгружает) пользовательский режим сортировки для панелей.
Если режим загружен, он может быть установлен в панели посредством вызова функции
Panel.SetCustomSortMode.
Функция Compare
result = Compare (Pi1, Pi2, FarOptions)
Параметры:
Pi1 и Pi2 - сравниваемые элементы панели, структуры типа SortingPanelItem.
FarOptions - таблица, содержащая текущие опции сортировки панели в Far Manager
(все значения - булевые): DirectoriesFirst, SelectedFirst,
RevertSorting, SortGroups, NumericSort, CaseSensitiveSort.
Возвращает:
result - если 1-й элемент должен оказаться после прямой сортировки выше 2-го,
нужно возвратить отрицательное число, если ниже - положительное,
а если элементы по критерию сортировки равны - ноль.
Примечание 1:
Пользовательская сортировка использует библиотеку FFI от LuaJIT 2. Программирование
с использованием LuaJIT FFI требует предварительного освоения документации.
Примечание 2:
Пользовательские режимы сортировок панелей восстанавливаются при перезапуске Far,
если текущая конфигурация была сохранена, при условии, что соответствующие вызовы
Panel.LoadCustomSortMode() производятся в процессе загрузки макросов.
Восстановление происходит после окончания загрузки макросов, до начала исполнения
автостартующих макросов.
Примечание 3:
Пользовательские режимы сортировки принудительно выгружаются при выгрузке макросов.
Пример:
-- Загрузить сортировку по длине имени файла.
local ffi = require "ffi"
local C = ffi.C
Panel.LoadCustomSortMode (100,
{
Compare = function(p1, p2, opt)
local l1, l2 = C.wcslen(p1.FileName), C.wcslen(p2.FileName)
return l1<l2 and -1 or l1>l2 and 1 or 0
end;
Indicator = "bB";
})