Merge branch '2022_wildcard_quicksearch'
* 2022_wildcard_quicksearch: show help for quick search. Modified Quick search desctiption in man pages. cleanup of screen.c: do_search() function (indentation and trailing whitespace) do_search(): minor optimization. quicksearch: stop appending of chars if no file found Ticket #2022 (new quick search)
Этот коммит содержится в:
Коммит
65fefb39ea
@ -395,22 +395,6 @@ en el diálogo de selección de código.
|
||||
usadas para seleccionar el archivo superior en un panel, el archivo central y el inferior del
|
||||
panel, respectivamente.
|
||||
.TP
|
||||
.B Ctrl\-s, Alt\-s
|
||||
inicia la búsqueda de un archivo en la lista de directorios (panel activo). A
|
||||
partir de ese momento las teclas pulsadas se van añadiendo a la cadena en búsqueda
|
||||
y no a la línea de órdenes. Si la opción de
|
||||
.I Mostrar Mini\-estado
|
||||
está habilitada, la cadena a buscar se podrá ver en la línea de mini\-estado.
|
||||
Conforme tecleemos, dentro del panel activo la barra de selección se desplazará
|
||||
al siguiente archivo o directorio cuyo nombre coincida con las letras
|
||||
introducidas. Se pueden usar las teclas
|
||||
.I borrar
|
||||
o
|
||||
.I suprimir
|
||||
para corregir errores de escritura. Si pulsamos
|
||||
.I Ctrl\-s
|
||||
de nuevo, se busca la siguiente coincidencia.
|
||||
.TP
|
||||
.B Alt\-t
|
||||
rota el listado de pantalla actual para mostrar el siguiente modo
|
||||
de listado. Con esto es posible intercambiar rápidamente de un listado
|
||||
@ -509,6 +493,24 @@ con el ratón.
|
||||
muestra el historial de directorios visitados, equivale a pulsar la
|
||||
.I v
|
||||
con el ratón.
|
||||
.\"NODE " Quick search"
|
||||
.SH " Quick search"
|
||||
.TP
|
||||
.B Ctrl\-s, Alt\-s
|
||||
inicia la búsqueda de un archivo en la lista de directorios (panel activo). A
|
||||
partir de ese momento las teclas pulsadas se van añadiendo a la cadena en búsqueda
|
||||
y no a la línea de órdenes. Si la opción de
|
||||
.I Mostrar Mini\-estado
|
||||
está habilitada, la cadena a buscar se podrá ver en la línea de mini\-estado.
|
||||
Conforme tecleemos, dentro del panel activo la barra de selección se desplazará
|
||||
al siguiente archivo o directorio cuyo nombre coincida con las letras
|
||||
introducidas. Se pueden usar las teclas
|
||||
.I borrar
|
||||
o
|
||||
.I suprimir
|
||||
para corregir errores de escritura. Si pulsamos
|
||||
.I Ctrl\-s
|
||||
de nuevo, se busca la siguiente coincidencia.
|
||||
.\"NODE " Shell Command Line"
|
||||
.SH " Línea de Órdenes del Sistema"
|
||||
Esta sección enumera las teclas útiles para evitar la excesiva escritura
|
||||
|
@ -389,20 +389,6 @@ A panel legfelső, középső és alsó fájljának kiválasztásához használd
|
||||
sorban a megfelelő billentyű\-kombinációt. Linuxban M\-h a "history"
|
||||
bekapcsolására szolgál.
|
||||
.PP
|
||||
.B C\-s, M\-s
|
||||
Elindítja a fájl keresést a könyvtár listában. Amikor a keresés
|
||||
aktív, a billentyűlenyomások hozzáadódnak a keresett szöveghez a
|
||||
parancssorban. Ha a
|
||||
.I Mini fájlinfó
|
||||
opció engedélyezve van, a kereső szöveg a mini\-fájlinfó sorban jelenik
|
||||
meg. Amikor gépelsz, a mini kiválasztó sáv átlép a következő fájlra,
|
||||
amely a begépelt szöveggel egyezik. A
|
||||
.IR backspace ,
|
||||
vagy a
|
||||
.I DEL
|
||||
gombokat használhatod a gépelési hibák javítására. Ha a C\-s gombokat
|
||||
használod újra, új keresés kezdhető.
|
||||
.PP
|
||||
.B M\-t
|
||||
Vált a jelenlegi lista megjelenítési módról a következő megjelenítési
|
||||
módra. Ezzel gyorsan át tudsz váltani a hosszú listáról a rendezett
|
||||
@ -472,6 +458,22 @@ egérrel történő lenyomásával.
|
||||
.B M\-S\-h, M\-H
|
||||
Megjeleníti a könyvtár előzményeket, azonos a 'v' egérrel történő
|
||||
lenyomásával.
|
||||
.\"NODE " Quick search"
|
||||
.SH " Quick search"
|
||||
.PP
|
||||
.B C\-s, M\-s
|
||||
Elindítja a fájl keresést a könyvtár listában. Amikor a keresés
|
||||
aktív, a billentyűlenyomások hozzáadódnak a keresett szöveghez a
|
||||
parancssorban. Ha a
|
||||
.I Mini fájlinfó
|
||||
opció engedélyezve van, a kereső szöveg a mini\-fájlinfó sorban jelenik
|
||||
meg. Amikor gépelsz, a mini kiválasztó sáv átlép a következő fájlra,
|
||||
amely a begépelt szöveggel egyezik. A
|
||||
.IR backspace ,
|
||||
vagy a
|
||||
.I DEL
|
||||
gombokat használhatod a gépelési hibák javítására. Ha a C\-s gombokat
|
||||
használod újra, új keresés kezdhető.
|
||||
.\"NODE " Shell Command Line"
|
||||
.SH " Shell parancssor"
|
||||
Ez a rész tartalamazza azokat a billentyű\-kombinációkat,
|
||||
|
@ -400,20 +400,6 @@ the dialog of encodings.
|
||||
usato per selezionare rispettivamente il file superiore, il file centrale o
|
||||
quello inferiore in un pannello.
|
||||
.TP
|
||||
.B C\-s, M\-s
|
||||
inizia una ricerca nella directory. Quando la ricerca è attiva i dati
|
||||
immessi dall'utente vengono aggiunti alla stringa di ricerca invece
|
||||
della riga di comando. Se l'opzione
|
||||
.I Mostra mini\-stato
|
||||
è abilitata, la stringa di ricerca viene mostrata nella riga di
|
||||
mini\-stato. Scrivendo, la barra di selezione si muove al prossimo
|
||||
file che comincia con le lettere battute. I tasti
|
||||
.I backspace
|
||||
o
|
||||
.I canc
|
||||
possono essere utilizzati per correggere errori di battitura. Se viene premuto
|
||||
nuovamente, viene ricercata la corrispondenza successiva.
|
||||
.TP
|
||||
.B M\-t
|
||||
cambia il modo di visualizzazione corrente per mostrare la modalità
|
||||
successiva. In questo modo è possibile cambiare velocemente da listati
|
||||
@ -479,6 +465,22 @@ premere '>' con il mouse.
|
||||
.TP
|
||||
.B M\-S\-h, M\-H
|
||||
mostra la cronologia directory, equivalente a premere 'v' con il mouse.
|
||||
.\"NODE " Quick search"
|
||||
.SH " Quick search"
|
||||
.TP
|
||||
.B C\-s, M\-s
|
||||
inizia una ricerca nella directory. Quando la ricerca è attiva i dati
|
||||
immessi dall'utente vengono aggiunti alla stringa di ricerca invece
|
||||
della riga di comando. Se l'opzione
|
||||
.I Mostra mini\-stato
|
||||
è abilitata, la stringa di ricerca viene mostrata nella riga di
|
||||
mini\-stato. Scrivendo, la barra di selezione si muove al prossimo
|
||||
file che comincia con le lettere battute. I tasti
|
||||
.I backspace
|
||||
o
|
||||
.I canc
|
||||
possono essere utilizzati per correggere errori di battitura. Se viene premuto
|
||||
nuovamente, viene ricercata la corrispondenza successiva.
|
||||
.\"NODE " Shell Command Line"
|
||||
.SH " Shell a riga di comando"
|
||||
Questa sezione elenca i tasti utili ad evitare troppe battiture
|
||||
|
@ -486,20 +486,6 @@ the dialog of encodings.
|
||||
used to select the top file in a panel, the middle file and the bottom one,
|
||||
respectively.
|
||||
.TP
|
||||
.B C\-s, Alt\-s
|
||||
start a filename search in the directory listing. When the search is
|
||||
active, the user input will be added to the search string instead of
|
||||
the command line. If the
|
||||
.I Show mini\-status
|
||||
option is enabled the search string is shown on the mini\-status
|
||||
line. When typing, the selection bar will move to the next file
|
||||
starting with the typed letters. The
|
||||
.I backspace
|
||||
or
|
||||
.I DEL
|
||||
keys can be used to correct typing mistakes. If C\-s is pressed
|
||||
again, the next match is searched for.
|
||||
.TP
|
||||
.B Alt\-t
|
||||
toggle the current display listing to show the next display listing
|
||||
mode.
|
||||
@ -586,6 +572,29 @@ with the mouse.
|
||||
.B Alt\-Shift\-h, Alt\-H
|
||||
displays the directory history, equivalent to depressing the 'v' with
|
||||
the mouse.
|
||||
.\"NODE " Quick search"
|
||||
.SH " Quick search"
|
||||
The Quick search mode allows to perform fast file search in file panel.
|
||||
Press
|
||||
.I C\-s
|
||||
or
|
||||
.I Alt\-s
|
||||
to start a filename search in the directory listing.
|
||||
.P
|
||||
When the search is active, the user input will be added to the search string
|
||||
instead of the command line. If the
|
||||
.I Show mini\-status
|
||||
option is enabled the search string is shown on the mini\-status
|
||||
line. When typing, the selection bar will move to the next file
|
||||
starting with the typed letters. The
|
||||
.I backspace
|
||||
or
|
||||
.I DEL
|
||||
keys can be used to correct typing mistakes. If C\-s is pressed
|
||||
again, the next match is searched for.
|
||||
.P
|
||||
Besides the filename characters, you can also use wildcard
|
||||
characters '*' and '?'.
|
||||
.\"NODE " Shell Command Line"
|
||||
.SH " Shell Command Line"
|
||||
This section lists keys which are useful to avoid excessive typing when
|
||||
|
@ -317,21 +317,6 @@ the dialog of encodings.
|
||||
.BR M\-g ", " M\-r ", " M\-j .
|
||||
Używane do wybierania najwyższego, środkowego i najniższego pliku w panelu.
|
||||
.PP
|
||||
.BR C\-s ", " M\-s .
|
||||
Uruchamia szukanie pliku w katalogu na podstawie jego nazwy. Kiedy szukanie
|
||||
jest aktywne, każde naciśnięcie klawisza doda jeden znak do poszukiwania
|
||||
zamiast wypisania go linii poleceń. Jeśli opcja
|
||||
.I "Show mini\-status"
|
||||
jest włączona, szukany ciąg znaków pojawia się w linii mini\-statusu. Kiedy
|
||||
wpisujemy znak, linia wyboru przemieszcza się do następnego pliku zaczynającego
|
||||
się od podanych liter. Klawisze
|
||||
.I backspace
|
||||
lub
|
||||
.I del
|
||||
mogą być używane do poprawiania błędów. Jeśli C\-s zostanie naciśnięte ponownie,
|
||||
Midnight Commander rozpoczyna szukanie następnego pliku
|
||||
zaczynającego się od podanych znaków.
|
||||
.PP
|
||||
.BR M\-t .
|
||||
Przełącza tryb wyświetlania do następnego możliwego. Używając tej opcji
|
||||
łatwo jest przejść szybko z długiego do krótkiego trybu wyświetlania
|
||||
@ -399,6 +384,23 @@ w '>'.
|
||||
.BR M\-S\-h ", " M\-H .
|
||||
Wyświetla historię katalogów, podobne działanie do kliknięcia myszką 'v'.
|
||||
.PP
|
||||
.\"NODE " Quick search"
|
||||
.SH " Quick search"
|
||||
.PP
|
||||
.BR C\-s ", " M\-s .
|
||||
Uruchamia szukanie pliku w katalogu na podstawie jego nazwy. Kiedy szukanie
|
||||
jest aktywne, każde naciśnięcie klawisza doda jeden znak do poszukiwania
|
||||
zamiast wypisania go linii poleceń. Jeśli opcja
|
||||
.I "Show mini\-status"
|
||||
jest włączona, szukany ciąg znaków pojawia się w linii mini\-statusu. Kiedy
|
||||
wpisujemy znak, linia wyboru przemieszcza się do następnego pliku zaczynającego
|
||||
się od podanych liter. Klawisze
|
||||
.I backspace
|
||||
lub
|
||||
.I del
|
||||
mogą być używane do poprawiania błędów. Jeśli C\-s zostanie naciśnięte ponownie,
|
||||
Midnight Commander rozpoczyna szukanie następnego pliku
|
||||
zaczynającego się od podanych znaków.
|
||||
.\"NODE " Shell Command Line"
|
||||
.SH " Linia Powłoki"
|
||||
Ta sekcja opisuje klawisze, które są użyteczne do efektywniejszego
|
||||
|
@ -487,21 +487,6 @@ Midnight Commander\-а. Для возврата к вашему приложен
|
||||
верхний, средний или нижний файл из числа отображаемых в данный момент
|
||||
на панели.
|
||||
.PP
|
||||
.B C\-s, M\-s.
|
||||
Инициирует режим поиска имен файлов в текущем каталоге по первым
|
||||
символам имени. После нажатия одной из этих комбинаций, вводимые символы
|
||||
отображаются не в командной строке, а в строке поиска. Если режим
|
||||
.I "Показ мини\-статуса"
|
||||
включен, эта строка отображается на месте строки мини\-статуса. В
|
||||
процессе ввода последующих символов линия подсветки перемещается к
|
||||
следующему файлу, название которого начинается с введенной строки
|
||||
символов. Клавиши
|
||||
.I backspace
|
||||
или
|
||||
.I DEL
|
||||
могут использоваться для исправления ошибок. Если C\-s нажато снова,
|
||||
осуществляется поиск следующего подходящего файла.
|
||||
.PP
|
||||
.B M\-t
|
||||
Циклически переключает режимы отображения списка файлов текущего
|
||||
каталога. С помощью этой комбинации клавиш можно быстро переключаться из
|
||||
@ -587,6 +572,31 @@ Midnight Commander\-а. Для возврата к вашему приложен
|
||||
.B M\-S\-h, M\-H
|
||||
Отображает историю перемещения по каталогам; эквивалентно нажатию мышкой
|
||||
на символ 'v' в верхнем углу панели.
|
||||
.\"NODE " Quick search"
|
||||
.SH "Быстрый поиск"
|
||||
Режим быстрого поиска позволяет быстро найти нужный файл в каталоге,
|
||||
отображённом в файловой панели, по первым символам имени.
|
||||
Для перехода в режим быстрого поиска используются клавиатурные сочетания
|
||||
.B C\-s
|
||||
или
|
||||
.B M\-s.
|
||||
.P
|
||||
После нажатия одной из этих комбинаций вводимые символы отображаются не
|
||||
в командной строке, а в строке поиска. Если режим
|
||||
.I "Показ мини\-статуса"
|
||||
включен, эта строка отображается на месте строки мини\-статуса. В
|
||||
процессе ввода последующих символов линия подсветки перемещается к
|
||||
следующему файлу, название которого начинается с введенной строки
|
||||
символов. Клавиши
|
||||
.I Backspace
|
||||
или
|
||||
.I DEL
|
||||
могут использоваться для исправления ошибок. Если
|
||||
.I C\-s
|
||||
нажато снова, осуществляется поиск следующего подходящего файла.
|
||||
.P
|
||||
Кроме обычных символов в имени файла также можно использовать
|
||||
символы маски '*' и '?'.
|
||||
.\"NODE " Shell Command Line"
|
||||
.SH " Командная строка оболочки"
|
||||
В этом разделе перечислены команды, которые позволяют сократить число
|
||||
|
@ -372,20 +372,6 @@ the dialog of encodings.
|
||||
користе се за бирање највише датотеке у окну, средње датотеке и
|
||||
најниже, тим редом.
|
||||
.TP
|
||||
.B C\-s, M\-s
|
||||
започиње претрагу назива датотека у списку директоријума. Када је
|
||||
претрага укључена, кориснички унос ће бити додан на ниску за претрагу
|
||||
уместо на наредбени ред. Ако је избор
|
||||
.I Прикажи мини стање
|
||||
укључен, ниска за претрагу се приказује у реду мини стања. При куцању,
|
||||
ред за бирање ће се преместити на следећу датотеку, почевши од
|
||||
укуцаних слова. Тастери
|
||||
.I backspace
|
||||
или
|
||||
.I DEL
|
||||
се могу користити за исправљање грешака у куцању. Ако се комбинација
|
||||
C\-s поново притисне, тражи се следеће поклапање.
|
||||
.TP
|
||||
.B M\-t
|
||||
смењује текући списак приказа на следећи режим списка приказа. Уз ово
|
||||
је могуће брзо прећи са дугачког списка на обичан или режим који је
|
||||
@ -452,6 +438,22 @@ C\-s поново притисне, тражи се следеће поклап
|
||||
.TP
|
||||
.B M\-S\-h, M\-H
|
||||
приказује историју директоријума, еквивалент притиску `v' дугметом миша.
|
||||
.\"NODE " Quick search"
|
||||
.SH " Quick search"
|
||||
.TP
|
||||
.B C\-s, M\-s
|
||||
започиње претрагу назива датотека у списку директоријума. Када је
|
||||
претрага укључена, кориснички унос ће бити додан на ниску за претрагу
|
||||
уместо на наредбени ред. Ако је избор
|
||||
.I Прикажи мини стање
|
||||
укључен, ниска за претрагу се приказује у реду мини стања. При куцању,
|
||||
ред за бирање ће се преместити на следећу датотеку, почевши од
|
||||
укуцаних слова. Тастери
|
||||
.I backspace
|
||||
или
|
||||
.I DEL
|
||||
се могу користити за исправљање грешака у куцању. Ако се комбинација
|
||||
C\-s поново притисне, тражи се следеће поклапање.
|
||||
.\"NODE " Shell Command Line"
|
||||
.SH " Наредбени ред љуске"
|
||||
Овај одељак набраја пречице које су корисне за избегавање претераног
|
||||
|
@ -1019,7 +1019,10 @@ void edit_symlink_cmd (void)
|
||||
|
||||
void help_cmd (void)
|
||||
{
|
||||
interactive_display (NULL, "[main]");
|
||||
if (current_panel->searching)
|
||||
interactive_display (NULL, "[Quick search]");
|
||||
else
|
||||
interactive_display (NULL, "[main]");
|
||||
}
|
||||
|
||||
void
|
||||
|
100
src/screen.c
100
src/screen.c
@ -2193,80 +2193,82 @@ mark_file (WPanel *panel)
|
||||
static void
|
||||
do_search (WPanel *panel, int c_code)
|
||||
{
|
||||
size_t l, max, buf_max;
|
||||
size_t l;
|
||||
int i, sel;
|
||||
int wrapped = 0;
|
||||
gboolean wrapped = FALSE;
|
||||
char *act;
|
||||
mc_search_t *search;
|
||||
char *reg_exp, *esc_str;
|
||||
gboolean is_found = FALSE;
|
||||
|
||||
l = strlen (panel->search_buffer);
|
||||
if (c_code == KEY_BACKSPACE) {
|
||||
if (l != 0) {
|
||||
if (l != 0) {
|
||||
act = panel->search_buffer + l;
|
||||
str_prev_noncomb_char (&act, panel->search_buffer);
|
||||
act[0] = '\0';
|
||||
}
|
||||
panel->search_chpoint = 0;
|
||||
} else {
|
||||
if (c_code && (gsize) panel->search_chpoint < sizeof (panel->search_char)) {
|
||||
if (c_code != 0 && (gsize) panel->search_chpoint < sizeof (panel->search_char)) {
|
||||
panel->search_char[panel->search_chpoint] = c_code;
|
||||
panel->search_chpoint++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (panel->search_chpoint > 0) {
|
||||
switch (str_is_valid_char (panel->search_char, panel->search_chpoint)) {
|
||||
case -2:
|
||||
return;
|
||||
case -1:
|
||||
case -2:
|
||||
return;
|
||||
case -1:
|
||||
panel->search_chpoint = 0;
|
||||
return;
|
||||
default:
|
||||
if (l + panel->search_chpoint < sizeof (panel->search_buffer)) {
|
||||
memcpy (panel->search_buffer + l, panel->search_char,
|
||||
panel->search_chpoint);
|
||||
l+= panel->search_chpoint;
|
||||
(panel->search_buffer + l)[0] = '\0';
|
||||
panel->search_chpoint = 0;
|
||||
return;
|
||||
default:
|
||||
if (l + panel->search_chpoint < sizeof (panel->search_buffer)) {
|
||||
memcpy (panel->search_buffer + l, panel->search_char,
|
||||
panel->search_chpoint);
|
||||
l+= panel->search_chpoint;
|
||||
(panel->search_buffer + l)[0] = '\0';
|
||||
panel->search_chpoint = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buf_max = panel->case_sensitive ?
|
||||
str_prefix (panel->search_buffer, panel->search_buffer) :
|
||||
str_caseprefix (panel->search_buffer, panel->search_buffer);
|
||||
max = 0;
|
||||
reg_exp = g_strdup_printf ("%s*", panel->search_buffer);
|
||||
esc_str = strutils_escape (reg_exp, -1, ",|\\{}[]", TRUE);
|
||||
search = mc_search_new (esc_str, -1);
|
||||
search->search_type = MC_SEARCH_T_GLOB;
|
||||
search->is_entire_line = TRUE;
|
||||
search->is_case_sentitive = 0;
|
||||
|
||||
sel = panel->selected;
|
||||
for (i = panel->selected; !wrapped || i != panel->selected; i++) {
|
||||
if (i >= panel->count) {
|
||||
i = 0;
|
||||
if (wrapped)
|
||||
break;
|
||||
wrapped = 1;
|
||||
}
|
||||
l = panel->case_sensitive ?
|
||||
str_prefix (panel->dir.list[i].fname, panel->search_buffer) :
|
||||
str_caseprefix (panel->dir.list[i].fname, panel->search_buffer);
|
||||
if (l > max) {
|
||||
max = l;
|
||||
if (i >= panel->count) {
|
||||
i = 0;
|
||||
if (wrapped)
|
||||
break;
|
||||
wrapped = TRUE;
|
||||
}
|
||||
if (mc_search_run (search, panel->dir.list[i].fname,
|
||||
0, panel->dir.list[i].fnamelen, NULL)) {
|
||||
sel = i;
|
||||
if (max == buf_max) break;
|
||||
}
|
||||
is_found = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
unselect_item (panel);
|
||||
panel->selected = sel;
|
||||
select_item (panel);
|
||||
|
||||
act = panel->search_buffer + strlen (panel->search_buffer);
|
||||
while (max < buf_max) {
|
||||
str_prev_char_safe (&act);
|
||||
if (is_found) {
|
||||
unselect_item (panel);
|
||||
panel->selected = sel;
|
||||
select_item (panel);
|
||||
paint_panel (panel);
|
||||
} else if (c_code != KEY_BACKSPACE) {
|
||||
act = panel->search_buffer + l;
|
||||
str_prev_noncomb_char (&act, panel->search_buffer);
|
||||
act[0] = '\0';
|
||||
buf_max = panel->case_sensitive ?
|
||||
str_prefix (panel->search_buffer, panel->search_buffer) :
|
||||
str_caseprefix (panel->search_buffer, panel->search_buffer);
|
||||
}
|
||||
|
||||
paint_panel (panel);
|
||||
mc_search_free (search);
|
||||
g_free (reg_exp);
|
||||
g_free (esc_str);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user