shmuz / far2m

Linux port of FAR2 with FAR3 macro system and extended plugins' API
GNU General Public License v2.0
27 stars 1 forks source link

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

Closed sorcodiv closed 2 months ago

sorcodiv commented 5 months ago

При назначении "горячих клавиш" макросам в меню плагинов (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;
}
shmuz commented 5 months ago

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

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

shmuz commented 5 months ago

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

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

sorcodiv commented 5 months ago

Эта проблема есть и в 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

shmuz commented 5 months ago

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

sorcodiv commented 5 months ago

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

shmuz commented 5 months ago

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

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

shmuz commented 2 months ago

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