View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0003132 | Far Manager | Fast Find | public | 2015-12-14 17:50 | 2016-09-22 17:47 |
| Reporter | Cavaler | Assigned To | |||
| Priority | normal | Severity | feature | Reproducibility | always |
| Status | new | Resolution | open | ||
| Summary | 0003132: Научить быстрый поиск искать не только с начала файла | ||||
| Description | Предлагается научить быстрый поиск искать введенный текст не с начала имени файла, если файла с такой строкой в начале нет (то есть если текущий вариант ничего не нашел). Приложен патч с опциональной реализацией такой фичи. Rationale: В моем личном опыте постоянно приходится использовать быструю навигацию в каталоге, где куча файлов (или подкаталогов) гначинаются с одной и то же строки, типа такого: nav_addinfo nav_alarms2 nav_alerts nav_anchor_watch ... и так 45 каталогов. Или например в каталоге с альбомами одной группы: 1970 - Jesus Christ Superstar 1981 - Cats 1987 - The Phantom of the Opera В таких случаях текущая раелизация малопригодна. | ||||
| Tags | No tags attached. | ||||
| Build | |||||
|
|
fast_find_patch.patch (2,908 bytes)
Index: unicode_far/config.cpp
===================================================================
--- unicode_far/config.cpp (revision 13585)
+++ unicode_far/config.cpp (working copy)
@@ -188,6 +188,7 @@
AutoUpdateLimitItem->Indent(4);
AutoUpdateTextItem->Indent(4);
Builder.AddCheckbox(MConfigAutoUpdateRemoteDrive, AutoUpdateRemoteDrive);
+ Builder.AddCheckbox(MFastFindSubstring, FastFindSubstring);
Builder.AddSeparator();
Builder.AddCheckbox(MConfigShowColumns, ShowColumnTitles);
@@ -1744,6 +1745,7 @@
{FSSF_PRIVATE, NKeySystem,L"AllCtrlAltShiftRule", OPT_DEF(AllCtrlAltShiftRule, 0x0000FFFF)},
{FSSF_PRIVATE, NKeySystem,L"AutoSaveSetup", OPT_DEF(AutoSaveSetup, false)},
{FSSF_PRIVATE, NKeySystem,L"AutoUpdateRemoteDrive", OPT_DEF(AutoUpdateRemoteDrive, true)},
+ {FSSF_PRIVATE, NKeySystem,L"FastFindSubstring", OPT_DEF(FastFindSubstring, false)},
{FSSF_PRIVATE, NKeySystem,L"BoxSymbols", OPT_DEF(strBoxSymbols, DefaultBoxSymbols)},
{FSSF_PRIVATE, NKeySystem,L"CASRule", OPT_DEF(CASRule, -1)},
{FSSF_PRIVATE, NKeySystem,L"CloseCDGate", OPT_DEF(CloseCDGate, true)},
Index: unicode_far/config.hpp
===================================================================
--- unicode_far/config.hpp (revision 13585)
+++ unicode_far/config.hpp (working copy)
@@ -686,6 +686,7 @@
// выше этого количество автоматически не обновлять панели.
IntOption AutoUpdateLimit;
BoolOption AutoUpdateRemoteDrive;
+ BoolOption FastFindSubstring;
StringOption strLanguage;
BoolOption SetIcon;
Index: unicode_far/farlang.templ.m4
===================================================================
--- unicode_far/farlang.templ.m4 (revision 13585)
+++ unicode_far/farlang.templ.m4 (working copy)
@@ -2130,6 +2130,18 @@
"Auto-Aggiorna &Unità Di Rete"
"Автооновлення м&ережевих дисків"
+MFastFindSubstring
+"Б&ыстрый поиск не с начала имени"
+"F&ast find not from name start"
+upd:"F&ast find not from name start"
+upd:"F&ast find not from name start"
+upd:"F&ast find not from name start"
+upd:"F&ast find not from name start"
+upd:"F&ast find not from name start"
+upd:"F&ast find not from name start"
+upd:"F&ast find not from name start"
+upd:"F&ast find not from name start"
+
MConfigShowColumns
"Показывать &заголовки колонок"
"Show &column titles"
Index: unicode_far/filelist.cpp
===================================================================
--- unicode_far/filelist.cpp (revision 13585)
+++ unicode_far/filelist.cpp (working copy)
@@ -3467,6 +3467,11 @@
}
}
+ if (Global->Opt->FastFindSubstring && !Name.empty() && (Name[0] != '*'))
+ {
+ return FindPartName(L"*" + Name, Next, Direct);
+ }
+
return FALSE;
#else
// Mantis_698
|
|
|
Может я чего не понял, но если в начале поставить * то ведь ищет по всему имени, не? Некоторые пользователи ставят макрос, который автоматически вбивает *. |
|
|
Без макроса каждый раз вбивать в начало * неудобно, а макросы писать умеют далеко не все. |
|
|
Макрос можно положить в дистрибутив. |
|
|
А главное, то, что я предлагаю - слегка отличается в поведении. Поиск в первую очередь с начала имени, и только если не нашлось - с середины. Как такое сделать макросом - я не представляю. |
|
|
|
|
|
Повторюсь, функциональносто у макроса, добавляющего звездочку, хуже. То, что я написал - в первую очередь ищет с начала имени, а если уж не нашлось - то с середины. Это оказалось (ну лично мне) очень-очень удобно. |
|
|
Вы о каком именно макросе? |
|
|
О вышеприведенном. Все, что он делает - это при нажатии например AltA в строку поиска добавляет "*a", а не просто "a". Разве нет? |
|
|
нет, он делает именно то, что вы просите. |
|
|
А, ну да, не порсто звездочку добавляет. Но если по первой букве что-то нашлось, а я продолжаю печатать и не находится - то уже ничего не добавляет. Fail. |
|
|
Поясните каково же в таком случае желаемое поведение. P.S. Я лично не против патча, и лишь хотел продемонстрировать, что возможности макросов больше, чем может показаться. (Хотя в данном случае код макроса не слишком прямолинеен, ввиду 0003268) |
|
|
Желаемое поведение таково. Если есть файлы с именами, начинающимися с введенной строки - позиционироваться на них. А если их нет - то та тех, где введенная строка есть хотя бы в середине имени. Ctrl-Enter перебирает и те, и те. Так, например, зайтя в \Windows, и начав набирать "temp", я попадаю на каталог Temp, и только нажав Ctrl_Enter - на CbsTemp. |
|
|
Уловил. Если хочется найти "CbsTemp", а на панели присутствует например "twain_32", то макрос не сработает. А вот это кстати может быть нежелательно.. |
|
|
|
|
|
Такой вариант вроде бы работает. Выложи тогда куда-нибудь этот полет фантазии. |
|
|
Подумалось, что полёт фантазии может быть намного проще, проверьте (вместо всех 3х макросов) |
|
|
Можно ещё на 2 строчки сократить: |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2015-12-14 17:50 | Cavaler | New Issue | |
| 2015-12-14 17:50 | Cavaler | File Added: fast_find_patch.patch | |
| 2015-12-14 17:55 | shmuel | Note Added: 0014125 | |
| 2015-12-14 17:58 | Cavaler | Note Added: 0014126 | |
| 2015-12-14 17:59 | Cavaler | Note Edited: 0014126 | |
| 2015-12-14 18:02 | DrKnS | Note Added: 0014127 | |
| 2015-12-15 10:30 | Cavaler | Note Added: 0014130 | |
| 2016-07-17 20:40 | JohnDoe | Note Added: 0014669 | |
| 2016-09-20 12:37 | Cavaler | Note Added: 0014781 | |
| 2016-09-21 07:45 | JohnDoe | Note Added: 0014782 | |
| 2016-09-21 08:33 | Cavaler | Note Added: 0014783 | |
| 2016-09-21 08:41 | zg | Note Added: 0014784 | |
| 2016-09-21 09:20 | Cavaler | Note Added: 0014785 | |
| 2016-09-21 09:52 | JohnDoe | Note Added: 0014786 | |
| 2016-09-21 10:10 | Cavaler | Note Added: 0014788 | |
| 2016-09-21 10:32 | JohnDoe | Note Added: 0014789 | |
| 2016-09-21 10:41 | JohnDoe | Note Added: 0014790 | |
| 2016-09-21 10:45 | JohnDoe | Note Edited: 0014790 | |
| 2016-09-21 10:46 | JohnDoe | Note Edited: 0014790 | |
| 2016-09-21 10:54 | Cavaler | Note Added: 0014791 | |
| 2016-09-21 11:16 | JohnDoe | Note Added: 0014792 | |
| 2016-09-22 12:24 | shmuel | Note Added: 0014793 |