far2m icon indicating copy to clipboard operation
far2m copied to clipboard

Hotkeys problem in "Plugin commands" (F11) for Lua macros

Open sorcodiv opened this issue 1 year ago • 6 comments

При назначении "горячих клавиш" макросам в меню плагинов (F11) столкнулся с проблемой смены горячих клавиш при изменении состава макросов. Воспроизвести можно без изменения установленных макросов, достаточно различия в area. Проиллюстрировать можно простым макросом, который добавляет разные пункты меню в разных area. Назначаю hotkey "b" только для второго пункта меню в панелях. В редакторе hotkey "b" уже присвоен другому макросу. Кстати, на чистом профиле, если назначить горячую клавишу только для макроса, то она не будет отображаться, пока не назначить горячую клавишу для любого плагина.

F11 (panel): Hotkey A b Hotkey B Hotkey C

F11 (editor): Hotkey B b Hotkey C

Версия far2m 2.6.0-2024-03-12-4906958. В профиле hotkey прописывается так: ~/.config/far2m/plugins/state.ini luamacro@8b422a4d00b9d6d6:Hotkey#2=b

Код макроса:

local function Main(cmd)
  far.Message(cmd, "debug", ";OK")
end

MenuItem {
  description = "HotkeyA";
  menu   = "Plugins";
  area   = "Shell";
  guid   = "4F9368C4-38E8-4548-B727-56D8BA05BB99";
  text   = function() return "Hotkey A" end;
  action = function() Main("Hotkey A") end;
}

MenuItem {
  description = "HotkeyB";
  menu   = "Plugins";
  area   = "Shell Editor";
  guid   = "EA448C67-2238-437B-837F-1E6CFB1EC568";
  text   = function() return "Hotkey B" end;
  action = function() Main("Hotkey B") end;
}

MenuItem {
  description = "HotkeyC";
  menu   = "Plugins";
  area   = "Shell Editor Dialog";
  guid   = "7864AEEC-DB2F-4D8B-8926-FAA65EAAFE25";
  text   = function() return "Hotkey C" end;
  action = function() Main("Hotkey C") end;
}

sorcodiv avatar Apr 21 '24 11:04 sorcodiv

Кстати, на чистом профиле, если назначить горячую клавишу только для макроса, то она не будет отображаться, пока не назначить горячую клавишу для любого плагина.

Вот это вроде починил.

shmuz avatar Apr 21 '24 19:04 shmuz

При назначении "горячих клавиш" макросам в меню плагинов (F11) столкнулся с проблемой смены горячих клавиш при изменении состава макросов.

Эта проблема есть и в Far3. Скорее всего устранить её без серьёзных переделок в Фаре не получится. Попробуйте на Far3, и если убедитесь, что проблема есть, то можно открыть Issue для Far3.

shmuz avatar Apr 21 '24 20:04 shmuz

Эта проблема есть и в Far3.

нет, в far3 пример макроса работает корректно:

F11 (panel): Hotkey A b Hotkey B Hotkey C

F11 (editor): b Hotkey B Hotkey C

связка хранится в Profile\pluginhotkeys.db в виде: pluginkey: 4EBBEFC8-2084-4B7F-94C0-692CE136894D menuguid: EA448C67-2238-437B-837F-1E6CFB1EC568 type: 1 hotkey: b

sorcodiv avatar Apr 21 '24 20:04 sorcodiv

Да, по-видимому я неправильно истолковал результат опыта на Far3. Но в far2 у пунктов меню нет гуидов, а лишь порядковые номера. Если я это переделаю на манер Far3, то все не мои плагины перестанут работать.

shmuz avatar Apr 21 '24 20:04 shmuz

Т.е. правильным выглядит вариант реализовать menuguid в far2l (для всех плагинов), а затем портировать в far2m? Я в принципе могу завести issue на far2l, но понимаю, что это, наверное, на самая приоритетная задача будет.

sorcodiv avatar Apr 21 '24 21:04 sorcodiv

Я в принципе могу завести issue на far2l, но понимаю, что это, наверное, на самая приоритетная задача будет.

Если будете заводить, то сразу стоит порекомендовать использовать структуры из Far3: PluginMenuItem и PluginInfo - оно там красиво сделано. Но какова будет (и будет ли) на это реакция автора far2l, неизвестно.

shmuz avatar Apr 21 '24 21:04 shmuz

Можно проверять.

shmuz avatar Jul 10 '24 16:07 shmuz