From 7ddd4e9bb49da70839c00e45cea351835e650c0a Mon Sep 17 00:00:00 2001 From: Andrew Borodin Date: Sat, 20 Apr 2019 18:46:37 +0300 Subject: [PATCH] Ticket #3452: mcviewer: implement temporary change of search direction. Signed-off-by: Andrew Borodin --- doc/man/mc.1.in | 28 ++++++++++++++-------------- doc/man/ru/mc.1.in | 30 +++++++++++++----------------- lib/keybind.c | 1 + lib/keybind.h | 1 + misc/mc.default.keymap | 2 ++ misc/mc.emacs.keymap | 2 ++ src/keybind-defaults.c | 2 ++ src/viewer/actions_cmd.c | 10 ++++++++++ 8 files changed, 45 insertions(+), 31 deletions(-) diff --git a/doc/man/mc.1.in b/doc/man/mc.1.in index 89f3d6294..c2d7257d6 100644 --- a/doc/man/mc.1.in +++ b/doc/man/mc.1.in @@ -2928,25 +2928,25 @@ Toggle the wrap mode. Toggle the hex mode. .PP .B F5 -Goto line. This will prompt you for a line number and will display -that line. +Goto. You can specify a line number, offset or percentage of file size +of position that you want to view. .PP -.B F6, /. -Regular expression search. +.B F7, /, ? +Start search. These keys call the dialog window that allows you to set up +the search options. If key is ? the "Backwards" option is on. .PP -.B ?, -Reverse regular expression search. +.B C\-s +Continue forward search. .PP -.B F7 -Normal search / hex mode search. +.B C\-r +Continue reverse search. .PP -.B C\-s, F17, n. -Start normal search if there was no previous search expression else -find next match. +.B F17, n +Continue search in the chosen direction. .PP -.B C\-r. -Start reverse search if there was no previous search expression else -find next match. +.B N +Temporary change the search direction: backwards if forward search is chosen, +and vice versa. .PP .B F8 Toggle Raw/Parsed mode: This will show the file as found on disk or if diff --git a/doc/man/ru/mc.1.in b/doc/man/ru/mc.1.in index 1fa913e21..bf1403018 100644 --- a/doc/man/ru/mc.1.in +++ b/doc/man/ru/mc.1.in @@ -3178,31 +3178,27 @@ ASCII и шестнадцатеричный (hex). Для переключени Переключает между ASCII и шестнадцатеричным режимами. .PP .B F5 -Переход к строке по номеру. Будет запрошен номер строки, к просмотру -которой вы хотите перейти. +Переход. Можно указать номер строки, абсолютное смещение или проценты +от размера файла того места, к просмотру которой вы хотите перейти. .PP -.BR F6 ", " / -Поиск по регулярному выражению. +.BR F7, /, ? +Начать поиск. Вызов диалогового окна, которое позволит установить параметры +поиска. Если клавиша ?, то будет установлен параметр поиска "Назад". .PP -.B ? -Поиск назад по регулярному выражению. -.PP -.B F7 -Вызов диалогового окна для задания шаблона поиска для обычного и -шестнадцатеричного поиска. -.PP -.B C\-s, F17, n -Если шаблон поиска еще не задан, вызывается диалоговое окно для его -задания, иначе повторяется поиск (дальше по тексту) в соответствии с -ранее определенным шаблоном. +.B C\-s +Продолжение поиска. .PP .B C\-r То же, что и .BR C\-s , но поиск производится в обратном направлении. .PP -.B n -Найти следующее совпадение. +.B F17, n +Продолжить поиск в заданном направлении. +.PP +.B N +Временно изменить направление поиска: искать назад, если установлен поиск +вперёд, и наоборот. .PP .B F8 Переключение между режимами Raw/Parsed: файл отображается либо в том diff --git a/lib/keybind.c b/lib/keybind.c index 57d945640..c6e3c82e1 100644 --- a/lib/keybind.c +++ b/lib/keybind.c @@ -345,6 +345,7 @@ static name_keymap_t command_names[] = { {"SearchBackward", CK_SearchBackward}, {"SearchForwardContinue", CK_SearchForwardContinue}, {"SearchBackwardContinue", CK_SearchBackwardContinue}, + {"SearchOppositeContinue", CK_SearchOppositeContinue}, #ifdef USE_DIFF_VIEW /* diff viewer */ diff --git a/lib/keybind.h b/lib/keybind.h index a79c95c54..cf34e74bb 100644 --- a/lib/keybind.h +++ b/lib/keybind.h @@ -322,6 +322,7 @@ enum CK_SearchBackward, CK_SearchForwardContinue, CK_SearchBackwardContinue, + CK_SearchOppositeContinue, /* diff viewer */ CK_ShowSymbols = 700L, diff --git a/misc/mc.default.keymap b/misc/mc.default.keymap index a815ffb9b..7ab6de964 100644 --- a/misc/mc.default.keymap +++ b/misc/mc.default.keymap @@ -366,6 +366,7 @@ SearchBackward = question SearchContinue = f17; n SearchForwardContinue = ctrl-s SearchBackwardContinue = ctrl-r +SearchOppositeContinue = shift-n MagicMode = f8 NroffMode = f9 Home = ctrl-a @@ -403,6 +404,7 @@ SearchBackward = question SearchContinue = f17; n SearchForwardContinue = ctrl-s SearchBackwardContinue = ctrl-r +SearchOppositeContinue = shift-n MagicMode = f8 NroffMode = f9 ToggleNavigation = tab diff --git a/misc/mc.emacs.keymap b/misc/mc.emacs.keymap index bcace057c..9769a72c7 100644 --- a/misc/mc.emacs.keymap +++ b/misc/mc.emacs.keymap @@ -368,6 +368,7 @@ SearchBackward = question SearchContinue = f17; n SearchForwardContinue = ctrl-s SearchBackwardContinue = ctrl-r +SearchOppositeContinue = shift-n MagicMode = f8 NroffMode = f9 Home = ctrl-a @@ -405,6 +406,7 @@ SearchBackward = question SearchContinue = f17; n SearchForwardContinue = ctrl-s SearchBackwardContinue = ctrl-r +SearchOppositeContinue = shift-n MagicMode = f8 NroffMode = f9 ToggleNavigation = tab diff --git a/src/keybind-defaults.c b/src/keybind-defaults.c index 013b5bad6..e2cba7432 100644 --- a/src/keybind-defaults.c +++ b/src/keybind-defaults.c @@ -469,6 +469,7 @@ static const global_keymap_ini_t default_viewer_keymap[] = { {"SearchBackward", "question"}, {"SearchForwardContinue", "ctrl-s"}, {"SearchBackwardContinue", "ctrl-r"}, + {"SearchOppositeContinue", "shift-n"}, {NULL, NULL} }; @@ -503,6 +504,7 @@ static const global_keymap_ini_t default_viewer_hex_keymap[] = { {"SearchBackward", "question"}, {"SearchForwardContinue", "ctrl-s"}, {"SearchBackwardContinue", "ctrl-r"}, + {"SearchOppositeContinue", "shift-n"}, {NULL, NULL} }; diff --git a/src/viewer/actions_cmd.c b/src/viewer/actions_cmd.c index 8d0d3445c..11d09c828 100644 --- a/src/viewer/actions_cmd.c +++ b/src/viewer/actions_cmd.c @@ -455,6 +455,16 @@ mcview_execute_cmd (WView * view, long command) mcview_search_options.backwards = TRUE; mcview_continue_search_cmd (view); break; + case CK_SearchOppositeContinue: + { + gboolean direction; + + direction = mcview_search_options.backwards; + mcview_search_options.backwards = !direction; + mcview_continue_search_cmd (view); + mcview_search_options.backwards = direction; + } + break; case CK_WrapMode: /* Toggle between wrapped and unwrapped view */ mcview_toggle_wrap_mode (view);