Page 1 of 3

Пользовательский режим сортировки для панелей

Posted: Wed 31 Jul, 2013 15:41
by Shmuel
В последние дни экспериментировал с кастомной сортировкой на Lua с участием плагина LuaMacro. Всё можно хорошо и гибко сделать, но быстродействие оставляет желать лучшего. То-есть, если в папке есть 1000 файлов/подпапок, то ещё можно комфортно работать, а на 10000 уже тормозит сильно (время сортировки 2...3 секунды).

Положительный момент состоит в том, что быстродействие остальных (не кастомных) сортировок при этом не затрагивается, т.е. вреда от этого не будет.

Вопрос ко всем: надо это делать?

Примечание модератора:
Обсуждение началось в теме Сортировка каталогов (папок) всегда по алфавиту

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 31 Jul, 2013 15:58
by DrKnS
надо это делать?
Если это будет реализовано в рамках стандартного api, а не каким-нибуть хаком с прямым вызовом LuaMacro, то никто не мешает набросать кастомную сортировку на lua, пользоваться ей до тех пор, пока быстродействие устраивает, и переписать на C++, если сильно припрёт.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Sat 03 Aug, 2013 10:14
by Shmuel
Учитывая, что пожелание кастомной сортировки в панелях периодически всплывает в форуме уже в течение ряда лет, я ожидал более оживлённой реакции, но в результате - только один отклик (спасибо!). Оказывается, кастомная сортировка мало кого интересует.

Но поскольку известно, что разработчики Фара пишут его для себя любимых (а лично меня кастомная сортировка интересует), есть шанс, что она всё же появится.

Продолжал эксперименты в этой области с использованием специфики LuaJIT 2.0, и удалось поднять производительность как минимум на порядок (по сравнению с данными в моём предыдущем сообщении на эту тему).

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Sat 03 Aug, 2013 10:42
by Alexey Samlyukov
мне вот как бы не нужна кастомная сортировка, мне нужна сортировка как в винде, т.е. с использованием StrCmpLogicalW(), я даже лет нцать назад делал патч для замены кастомной Numeric sort на легальную StrCmpLogicalW. но никто не заинтересовался. вместо этого прикрутили Name/Full name что еще ухудшило ситуацию.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Sat 03 Aug, 2013 10:48
by Shmuel
Alexey Samlyukov wrote:мне вот как бы не нужна кастомная сортировка, мне нужна сортировка как в винде, т.е. с использованием StrCmpLogicalW()
Так ведь "кастомная" означает типа "какая захочешь". Если будет кастомная - поставишь себе StrCmpLogicalW(), и всех-то делов.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Tue 13 Aug, 2013 17:05
by Shmuel
Ну вот, в первом приближении кастомная сортировка в панелях реализована.
Скорость сортировки, благодаря LuaJIT 2.0, примерно на уровне C++.
В реализации возможны недочёты - как всегда, покуда фичей ещё никто не пользовался.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 02:25
by Alexey Samlyukov
я не постиг дзен луа, поэтому можно готовый пример с реализацией нормальной сортировки, вместо нумериксорт? спасибо.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 05:23
by Shmuel
Вот пример с использованием StrCmpLogicalW - нужно сделать макрофайл с таким содержимым:
Для его работы нужна ночная сборка от 14 августа.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 05:35
by Alexey Samlyukov
ух ты, а может подпункт в меню сортировки?

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 05:40
by Shmuel
Если фича приживётся, то можно. А пока что можно сделать макрос с вызовом Panel.CustomSortMenu() - выводится отдельное меню для кастомных сортировок.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 05:43
by Alexey Samlyukov
чтоб выставлялась при старте надо макрос автостартующим делать? что там дописать надо?

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 05:46
by Shmuel
Нет, там вызов Panel.LoadCustomSortMode расположен вне макросов, поэтому сортировка загружается ещё раньше, чем начинают выполняться автостартующие макросы.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 05:47
by Alexey Samlyukov
индикатор горит n, а не b

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 05:50
by Shmuel
Alexey Samlyukov wrote:индикатор горит n, а не b
У меня - нормально. Кстати, если в индикаторе используются русские буквы, макрофайл должен быть в UTF-8.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 05:56
by Alexey Samlyukov
лежит в скриптах, автосэйв вкл, галка только на директории первые, после перезагрузки скидывается в по имени.

Re: Сортировка каталогов (папок) всегда по алфавиту

Posted: Wed 14 Aug, 2013 06:01
by Shmuel
А, теперь понятно, я-то автосэйвом не пользуюсь. Это пока не предусмотрено.

Можно сделать отдельный автостартующий макрос с каким-нибудь несуществующим ключом, типа key="foo".
Если данная сортировка нужна на обеих панелях, то сделать так:
  1. action=function()
  2.   Panel.SetCustomSortMode(100,0)
  3.   Panel.SetCustomSortMode(100,1)
  4. end;