Перестало работать Menu.Show Topic is solved

Здесь можно сообщить о найденных багах в Far.
Post Reply
Hedin
Posts: 210
Joined: Thu 17 Mar, 2005 10:29
Has thanked: 4 times

Перестало работать Menu.Show

Post by Hedin »

Перестало показываться меню:
  1. MM = MM or Menu.Show("[&1] Entities\n[&2] Document\n[&3] Content\n[&4] Actions", "FB2 Editor\n© " .. VER, 0x8 + 0x80, oldMM)
Проверка на архиве ночных версий показала, что меню перестаёт отображаться при переходе с Far30b5520.x64.20191207 на Far30b5522.x64.20191208. Никаких сообщений не выдётся, просто проскакивает строку, как будто её и нет.

Проверялось на чистых дистрибутивах, где добавлялся только один этот макрос.
Shmuel
Posts: 6187
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 336 times

Перестало работать Menu.Show

Post by Shmuel »

Фар 5560 - работает.

Code: Select all

╔═ FB2 Editor ══╗
║  [1] Entities ║
║  [2] Document ║
║  [3] Content  ║
║  [4] Actions  ║
╚════ © VER ════╝
User avatar
HaRT
Moderator
Posts: 9635
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 116 times
Been thanked: 242 times

Перестало работать Menu.Show

Post by HaRT »

У меня вот такой код нормально работает:

Code: Select all

Menu.Show("[&1] Entities\n[&2] Document\n[&3] Content\n[&4] Actions", "FB2 Editor\n© " .. "VER", 0x8 + 0x80, 3)
(без последнего параметра тоже).
Far Manager v3.0 build 5563 x86 (2020-02-26)
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6187
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 336 times

Перестало работать Menu.Show

Post by Shmuel »

Hedin wrote: Thu 27 Feb, 2020 15:59 MM = MM or Menu.Show(...)
Судя по этому (оригинальному) коду, меню будет выводиться только 1 раз, при первом вызове. Но это не проблема Фара, естественно.
Hedin
Posts: 210
Joined: Thu 17 Mar, 2005 10:29
Has thanked: 4 times

Перестало работать Menu.Show

Post by Hedin »

Да нет. Проблема в том что изменился вызов макросов.
Макрос был написал лет 5 назад, и прекрасно работал до 5520 включительно:
  1. local function FB2Editor(...)
  2.   repeat
  3.     local MM, SM = ...
  4.     MM = MM or Menu.Show("[&1] Entities\n[&2] Document\n[&3] Content\n[&4] Actions", "FB2 Editor\n© " .. VER, 0x8 + 0x80, oldMM)
  5. -- ...skip...
  6.     oldMM = MM
  7.   until SM ~= 0 or MM == 0
  8. end
  9.  
  10. Macro {
  11.   description = "FB2 Editor";
  12.   area = "Editor"; key = "CtrlAltX";
  13.   filemask = "*.fb2"; action = FB2Editor;
  14. }
А теперь в функцию FB2Editor стала передаваться таблица с параметрами макроса, и вызов меню сломался.
При этом если записать вызов так:
  1. Macro {
  2.   description = "FB2 Editor";
  3.   area = "Editor"; key = "CtrlAltX";
  4.   filemask = "*.fb2"; action = function() FB2Editor() end;
  5. }
то всё работает.
buniak_a_h
Posts: 2254
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 134 times
Been thanked: 241 times
Contact:

Перестало работать Menu.Show

Post by buniak_a_h »

Эта тема обсуждалась. Изменился список параметров, передаваемых в action. Если сама процедура их не использует - не страшно; иначе надо исправлять.
Shmuel
Posts: 6187
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 336 times

Перестало работать Menu.Show

Post by Shmuel »

Классический пример неадекватного репорта и обращения за помощью. Показывается одна строчка кода и задаётся вопрос, почему не работает. Люди хотят помочь, тратят своё время, выдают возможные причины проблемы. И вот, через 4 дня, вопрошающий говорит "да ерунда все ваши предположения" и милостиво показывает уже не одну а 14 строк кода.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

Перестало работать Menu.Show

Post by zg »

+1. предупреждение.
buniak_a_h
Posts: 2254
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 134 times
Been thanked: 241 times
Contact:

Перестало работать Menu.Show

Post by buniak_a_h »

Shmuel, да ладно, это был . Про Far.Show и win.OutputDebugString автор теста, видимо, не знает и самостоятельно найти баг не может.
Hedin
Posts: 210
Joined: Thu 17 Mar, 2005 10:29
Has thanked: 4 times

Перестало работать Menu.Show

Post by Hedin »

Shmuel, Вообще-то 14 (хорошо что нумерация автоматическая, а то ещё невесть сколько бы потратили на подсчёт) строк - это было просто пояснение как решается эта проблема, а не багрепорт, если не догадались.

buniak_a_h, да не в этом дело. Просто не пришло в голову сначала, что запись в changelog плагина значит, что action() - это просто обобщенное название, и в ту функцию которую я писал начнут приходить левые параметры.
buniak_a_h
Posts: 2254
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 134 times
Been thanked: 241 times
Contact:

Перестало работать Menu.Show

Post by buniak_a_h »

Hedin wrote: Mon 02 Mar, 2020 14:48 не пришло в голову сначала, что запись в changelog плагина значит…
Вот и мне когда-то не пришло в голову. Потому и писал, что «нет в ченджлоге». Просто используя far.Show и win.OutputDebugString я нашёл причину неработоспособности минут за 20. И уж на Menu.Show даже не подумал бы.
Shmuel
Posts: 6187
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 336 times

Перестало работать Menu.Show

Post by Shmuel »

Hedin wrote: Mon 02 Mar, 2020 14:48 это было просто пояснение как решается эта проблема, а не багрепорт, если не догадались.
Ну да, как же, не догадался. Если вы не притворяетесь, то поясню, что под репортом имелось в виду ваше исходное сообщение. И оно включало в себя одну строку кода, без какого-то ни было контекста, что в принципе не позволяло понять, в чём может быть проблема.
Hedin wrote: Mon 02 Mar, 2020 14:48 запись в changelog плагина значит, что action() - это просто обобщенное название
"action" это вовсе не обобщённое название, а вполне буквальное - поле таблицы-аргумента функции Macro. Оно описано в документации. Если это поле переименовать, макросы не загрузятся.
Hedin
Posts: 210
Joined: Thu 17 Mar, 2005 10:29
Has thanked: 4 times

Перестало работать Menu.Show

Post by Hedin »

Shmuel, ну конечно, там даже решение проблемы приведено, куда уж там догадаться.
Про поле вообще смешно. Поля, насколько я знаю, записываются как table.field, без скобок. А со скобками пишут функции.
Shmuel wrote: Mon 02 Mar, 2020 16:36 одну строку кода, без какого-то ни было контекста, что в принципе не позволяло понять, в чём может быть проблема.
Как видите, мне помогло, подтолкнув в нужном направлении.

Так что спасибо вам в том числе за помощь.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

Перестало работать Menu.Show

Post by zg »

Hedin wrote: Mon 02 Mar, 2020 18:06Поля, насколько я знаю, записываются как table.field, без скобок. А со скобками пишут функции.
вы плохо знаете, продолжать не стоит.
Post Reply

Return to “Глюки и баги”