сортировка по "имени"

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
lvm
Posts: 58
Joined: Thu 13 Sep, 2018 12:48

сортировка по "имени"

Post by lvm »

Включена сортировка по имени. Я понимаю стоящую за этим логику: имя - это все до последней точки, но все равно выглядит неправильно. Кмк если бы именем считалось все до первой точки, было бы лучше.
╔══════════════════════ C:\Temp\1 ═════════╤═══════════╗ ║.. │ < Up >│25-12 10:08║ ║user.action │ 111,067│25-12 09:16║ ║user.filter │ 7,005│25-12 09:16║ ║user.action.bak │ 110,899│24-12 08:30║ ║user.filter.bak │ 7,439│24-12 08:30║ ║ │ │ ║ ║ │ │ ║
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

сортировка по "имени"

Post by Shmuel »

Новогодний подарок.
Распаковать, положить рядом с макрофайлами, перезагрузить Фар.
Вызывается через CtrlShiftF3, индикатор юЮ (и то, и другое можно перенастроить).
custom_sorts_first_dot.lua.7z
Исходная версия, содержит баг
(859 Bytes) Downloaded 74 times
--
custom_sorts_first_dot.lua.v1b.7z
Исходная версия с исправленным багом
(861 Bytes) Downloaded 63 times
--
custom_sorts_first_dot.lua.v2.7z
Версия с использованием FSF.CompareStrings вместо CompareStringW
(845 Bytes) Downloaded 70 times
Last edited by Shmuel on Wed 26 Dec, 2018 08:51, edited 2 times in total.
lvm
Posts: 58
Joined: Thu 13 Sep, 2018 12:48

сортировка по "имени"

Post by lvm »

Спасибо. Только

31: local name1, name2 = getName(p1.FileName), getName(p2.FileName)

и одной вещи я не понял: NORM_IGNORECASE убрал, но оно почему-то все равно сортирует case-insensitive.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

сортировка по "имени"

Post by Shmuel »

Так работает майкрософтовская функция CompareString. У неё много разных флагов, найдите в Интернете, поиграйтесь, может что и получится.
lvm
Posts: 58
Joined: Thu 13 Sep, 2018 12:48

сортировка по "имени"

Post by lvm »

Так я нашел: ignorecase в разных вариантах есть, а чтобы не игнорить - нет. Потому и спрашиваю.

https://docs.microsoft.com/en-gb/window ... restringex
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

сортировка по "имени"

Post by Shmuel »

Так спрашивайте у Майкрософта.
Можете использовать wcscmp (с отдельной обработкой ё и Ё).
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

сортировка по "имени"

Post by DrKnS »

Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

сортировка по "имени"

Post by Shmuel »

DrKnS, я подозреваю, что под "case sensitive" человек понимает так, что Z должно быть меньше b.
FSF.CompareStrings в каком-то из режимов тоже так понимает?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

сортировка по "имени"

Post by DrKnS »

Shmuel, да.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

сортировка по "имени"

Post by Shmuel »

Уж больно лаконично. Назовите настройки, чтобы можно было попробовать. (Естественно, имеется в виду только прямая сортировка).
P.S. Уже нашёл, Ordinal + case insensitive.
Last edited by Shmuel on Tue 25 Dec, 2018 17:49, edited 1 time in total.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

сортировка по "имени"

Post by Shmuel »

И тут началось интересное (для проверки нужен LuaMacro с последнего автоматического билда на Гитхабе):
custom_sorts_first_dot.lua.7z
(844 Bytes) Downloaded 68 times
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

сортировка по "имени"

Post by DrKnS »

18446744073709551615.png
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

сортировка по "имени"

Post by Shmuel »

OK, мой баг (эта функция, в отличие от CompareStringW, не обрабатывает отрицательные значения как особый случай).
Теперь остаётся понять:
1) почему файлы (даже без расширения) сортируются иначе, чем в Фаре
2) почему переключение между прямой и инверсной сортировкой ничего не меняет
custom_sorts_first_dot.lua.7z
(910 Bytes) Downloaded 59 times
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

сортировка по "имени"

Post by Shmuel »

Извиняюсь, ещё один баг (копипаста).
Но поведение прежнее.
custom_sorts_first_dot.lua.7z
(911 Bytes) Downloaded 69 times
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

сортировка по "имени"

Post by DrKnS »

CompareStrings - интерфейс к базовой функции сортировки строк. На неё влияют опции в системных настройках. Отдельные компоненты (например, файловая панель) могут реализовывать расширенные варианты сортировки на её базе.
Post Reply

Return to “Предложения и идеи”