Добавил кнопку для вызова фильтра файлов на панели в файл настройки /etc/mc/mc.keymap
[main]
Filter = kpslash
kpslash — знак деления на доп. клаве.
Оно работает, но немного не так как ожидалось. Окошко выбора фильтра при нажатии /
вызывается и заполняется нужным значением. Но вот применяется фильтр только всегда для левой панели, а не для активной, где стоит курсор.
Это бага такая и её как-то можно исправить? Или есть настройки для файла mc.keymap
чтобы выполнение действия задать для определённой левой/правой панели?
Если вызвать F9 / Правая панель / Фильтр...
, то фильтр сработает для правой панели и все последующие вызовы через /
будут теперь работать только для правой панели, а не для активной!
Upd 2018-02-06:
В результате перешёл на использование комбинации ctrl-a
$ egrep "\\[main\\]|^Filter" /etc/mc/mc.keymap
[main]
Filter = ctrl-a
И починил поведение Фильтра на то, которое считаю правильным.
Патч для Fedora 26 / mc 4.8.19
$ cat ~/rpmbuild/SOURCES/mc-fix-filter-hotkey.patch
--- ../mc-4.8.19.orig/lib/global.h 2018-02-05 13:52:02.000753933 +0800
+++ lib/global.h 2018-02-06 16:12:45.471910843 +0800
@@ -211,6 +211,8 @@
/* Ugly hack in order to distinguish between left and right panel in menubar */
/* Set if the command is being run from the "Right" menu */
gboolean is_right; /* If the selected menu was the right */
+
+ gboolean is_cmd_from_menu; /* temp hack. set only for filter_cmd*/
} widget;
/* The user's shell */
--- ../mc-4.8.19.orig/lib/global.c 2017-03-05 01:51:38.000000000 +0800
+++ lib/global.c 2018-02-06 16:17:31.583746039 +0800
@@ -76,7 +76,8 @@
{
.confirm_history_cleanup = TRUE,
.show_all_if_ambiguous = FALSE,
- .is_right = FALSE
+ .is_right = FALSE,
+ .is_cmd_from_menu = FALSE
},
.shell = NULL,
--- ../mc-4.8.19.orig/lib/widget/menu.c 2017-03-05 01:51:38.000000000 +0800
+++ lib/widget/menu.c 2018-02-06 16:32:39.266786981 +0800
@@ -341,6 +341,7 @@
Widget *w = WIDGET (menubar);
mc_global.widget.is_right = (menubar->selected != 0);
+ mc_global.widget.is_cmd_from_menu = TRUE;
menubar_finish (menubar);
send_message (w->owner, w, MSG_ACTION, entry->command, NULL);
do_refresh ();
--- ../mc-4.8.19.orig/src/filemanager/cmd.c 2017-03-05 01:51:38.000000000 +0800
+++ src/filemanager/cmd.c 2018-02-06 16:48:38.732283319 +0800
@@ -947,7 +947,13 @@
if (!SELECTED_IS_PANEL)
return;
- p = MENU_PANEL;
+ if (mc_global.widget.is_cmd_from_menu)
+ p = MENU_PANEL;
+ else
+ p = current_panel;
+
+ mc_global.widget.is_cmd_from_menu = FALSE;
+
set_panel_filter (p);
}