Перестало работать 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: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 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: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 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: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 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.  
  3.   repeat
  4.  
  5.     local MM, SM = ...
  6.  
  7.     MM = MM or Menu.Show("[&1] Entities\n[&2] Document\n[&3] Content\n[&4] Actions", "FB2 Editor\n© " .. VER, 0x8 + 0x80, oldMM)
  8.  
  9. -- ...skip...
  10.  
  11.     oldMM = MM
  12.  
  13.   until SM ~= 0 or MM == 0
  14.  
  15. end
  16.  
  17.  
  18.  
  19. Macro {
  20.  
  21.   description = "FB2 Editor";
  22.  
  23.   area = "Editor"; key = "CtrlAltX";
  24.  
  25.   filemask = "*.fb2"; action = FB2Editor;
  26.  
  27. }
А теперь в функцию FB2Editor стала передаваться таблица с параметрами макроса, и вызов меню сломался.
При этом если записать вызов так:
  1. Macro {
  2.  
  3.   description = "FB2 Editor";
  4.  
  5.   area = "Editor"; key = "CtrlAltX";
  6.  
  7.   filemask = "*.fb2"; action = function() FB2Editor() end;
  8.  
  9. }
то всё работает.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

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

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

Post by Shmuel »

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

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

Post by zg »

+1. предупреждение.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 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() - это просто обобщенное название, и в ту функцию которую я писал начнут приходить левые параметры.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 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: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 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: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

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

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