Неправильная сортировка по расширению

Здесь можно сообщить о найденных багах в Far.
Post Reply
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Неправильная сортировка по расширению

Post by Shmuel »

В установках панели:

Code: Select all

[ ] Sort folder names by extension
В установках сортировки:

Code: Select all

║  Numeric sort                     ▓
║  Uppercase before lowercase       ▓
║  Use sort groups        Shift-F11 ▓
║  Show selected first    Shift-F12 ▓
║  Show directories first           ▼
Результат сортировки:
-- расширение .7z затесалось между .pdf
-- расположение папок вообще не поддаётся объяснению

Code: Select all

╔═══════════ E:\BB\F\Today ══════╤═23:06
║x     Name      │ Size │  Date  │Time ║
║..              │  Up  │03/09/10│12:22║
║1033311369   pdf│228814│31/07/13│03:39║
║2007-2008       │Folder│03/09/10│12:22║
║2012-02-27      │Folder│27/02/12│08:16║
║AD           pdf│1212 K│26/08/13│08:50║
║FAR             │Folder│05/09/11│23:44║
║FarDebug        │Folder│06/05/13│23:32║
║faxes        7z │1024 K│23/06/13│11:06║
║3144069      pdf│908887│13/08/13│16:28║
Кроме того, нажатие CtrlR после первичного выбора данной сортировки иногда меняет расположение файлов.

Данный эффект появился в билдах 3144-3145.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Неправильная сортировка по расширению

Post by Shmuel »

Объяснение этому дефекту - не баг в реализации этой сортировки, а теоретически неверная установка, что можно файлы отсортировать по расширению, а папки относительно как друг друга, так и относительно файлов - по имени. Вот простой пример:

Code: Select all

a.zip (файл)
z.arc (файл)
mydir (папка)
Если файлы сортируются по расширению, то z.arc располагается выше a.zip. Вопрос: куда приткнуть mydir ? При сортировке по имени он должен быть выше z.arc (который сейчас первый) и одновременно ниже a.zip (который сейчас второй). Это, понятно, невозможно.

Поэтому правильным для этой опции представляется: сортировать папки по имени только между собой и помещать их все выше либо ниже файлов (несмотря на выключенную опцию "Show directories first").
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Неправильная сортировка по расширению

Post by DrKnS »

Оно?
  1. Index: filelist.cpp
  2.  
  3. ===================================================================
  4.  
  5. --- filelist.cpp    (revision 10957)
  6.  
  7. +++ filelist.cpp    (working copy)
  8.  
  9. @@ -387,12 +387,12 @@
  10.  
  11.  
  12.  
  13.             case BY_EXT:
  14.  
  15.                 UseReverseNameSort = true;
  16.  
  17. -               // НЕ СОРТИРУЕМ КАТАЛОГИ В РЕЖИМЕ "ПО РАСШИРЕНИЮ" (Опционально!)
  18.  
  19. -               if (!Global->Opt->SortFolderExt && ((SPtr1->FileAttr & FILE_ATTRIBUTE_DIRECTORY) || (SPtr2->FileAttr & FILE_ATTRIBUTE_DIRECTORY)))
  20.  
  21. -                   break;
  22.  
  23.  
  24.  
  25. -               Ext1=PointToExt(SPtr1->strName);
  26.  
  27. -               Ext2=PointToExt(SPtr2->strName);
  28.  
  29. +               Ext1 = !Global->Opt->SortFolderExt && (SPtr1->FileAttr & FILE_ATTRIBUTE_DIRECTORY)?
  30.  
  31. +                   SPtr1->strName.data() + SPtr1->strName.size() : PointToExt(SPtr1->strName);
  32.  
  33. +               Ext2 = !Global->Opt->SortFolderExt && (SPtr2->FileAttr & FILE_ATTRIBUTE_DIRECTORY)?
  34.  
  35. +                   SPtr2->strName.data() + SPtr2->strName.size() : PointToExt(SPtr2->strName);
  36.  
  37. +
  38.  
  39.                 if (!*Ext1)
  40.  
  41.                 {
  42.  
  43.                     if (!*Ext2)
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Неправильная сортировка по расширению

Post by Shmuel »

Это изменение вроде возвращает прежнее поведение, но нужно ли при обратной сортировке, чтобы:
а) папки показывались ниже файлов - может показывать их всегда выше?
б) происходила обратная сортировка папок по имени - может делать всегда прямую?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Неправильная сортировка по расширению

Post by DrKnS »

Shmuel wrote:а) папки показывались ниже файлов - может показывать их всегда выше?
Сам же снял "Show directories first", почему теперь вдруг выше?
б) происходила обратная сортировка папок по имени - может делать всегда прямую?
Windows при обратной сортировке по расширению папки переворачивает, чем мы хуже?
Post Reply

Return to “Глюки и баги”