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

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 5235
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Wed 31 Jul, 2013 15:41

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

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

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

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

User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

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

Post by DrKnS » Wed 31 Jul, 2013 15:58

надо это делать?
Если это будет реализовано в рамках стандартного api, а не каким-нибуть хаком с прямым вызовом LuaMacro, то никто не мешает набросать кастомную сортировку на lua, пользоваться ей до тех пор, пока быстродействие устраивает, и переписать на C++, если сильно припрёт.

Shmuel
Posts: 5235
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Sat 03 Aug, 2013 10:14

Учитывая, что пожелание кастомной сортировки в панелях периодически всплывает в форуме уже в течение ряда лет, я ожидал более оживлённой реакции, но в результате - только один отклик (спасибо!). Оказывается, кастомная сортировка мало кого интересует.

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

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

User avatar
Alexey Samlyukov
Posts: 1759
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 2 times
Contact:

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

Post by Alexey Samlyukov » Sat 03 Aug, 2013 10:42

мне вот как бы не нужна кастомная сортировка, мне нужна сортировка как в винде, т.е. с использованием StrCmpLogicalW(), я даже лет нцать назад делал патч для замены кастомной Numeric sort на легальную StrCmpLogicalW. но никто не заинтересовался. вместо этого прикрутили Name/Full name что еще ухудшило ситуацию.

Shmuel
Posts: 5235
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Sat 03 Aug, 2013 10:48

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

Shmuel
Posts: 5235
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Tue 13 Aug, 2013 17:05

Ну вот, в первом приближении кастомная сортировка в панелях реализована.
Скорость сортировки, благодаря LuaJIT 2.0, примерно на уровне C++.
В реализации возможны недочёты - как всегда, покуда фичей ещё никто не пользовался.

User avatar
Alexey Samlyukov
Posts: 1759
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 2 times
Contact:

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

Post by Alexey Samlyukov » Wed 14 Aug, 2013 02:25

я не постиг дзен луа, поэтому можно готовый пример с реализацией нормальной сортировки, вместо нумериксорт? спасибо.

Shmuel
Posts: 5235
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Wed 14 Aug, 2013 05:23

Вот пример с использованием StrCmpLogicalW - нужно сделать макрофайл с таким содержимым:
Для его работы нужна ночная сборка от 14 августа.

User avatar
Alexey Samlyukov
Posts: 1759
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 2 times
Contact:

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

Post by Alexey Samlyukov » Wed 14 Aug, 2013 05:35

ух ты, а может подпункт в меню сортировки?

Shmuel
Posts: 5235
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Wed 14 Aug, 2013 05:40

Если фича приживётся, то можно. А пока что можно сделать макрос с вызовом Panel.CustomSortMenu() - выводится отдельное меню для кастомных сортировок.

User avatar
Alexey Samlyukov
Posts: 1759
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 2 times
Contact:

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

Post by Alexey Samlyukov » Wed 14 Aug, 2013 05:43

чтоб выставлялась при старте надо макрос автостартующим делать? что там дописать надо?

Shmuel
Posts: 5235
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Wed 14 Aug, 2013 05:46

Нет, там вызов Panel.LoadCustomSortMode расположен вне макросов, поэтому сортировка загружается ещё раньше, чем начинают выполняться автостартующие макросы.

User avatar
Alexey Samlyukov
Posts: 1759
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 2 times
Contact:

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

Post by Alexey Samlyukov » Wed 14 Aug, 2013 05:47

индикатор горит n, а не b

Shmuel
Posts: 5235
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Wed 14 Aug, 2013 05:50

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

User avatar
Alexey Samlyukov
Posts: 1759
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 2 times
Contact:

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

Post by Alexey Samlyukov » Wed 14 Aug, 2013 05:56

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

Shmuel
Posts: 5235
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Wed 14 Aug, 2013 06:01

А, теперь понятно, я-то автосэйвом не пользуюсь. Это пока не предусмотрено.

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

Post Reply

Return to “Обсуждение макросов”