LuaFAR for Editor

Здесь можно обсудить ваш любимый плагин.
Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

Re: LuaFAR for Editor

Post by Shmuel »

Latest post of the previous page:

John Doe wrote:Неисправность "выше по теме" может проявиться в других плагинах?
В принципе - да. Для LuaFAR-плагинов, достаточно их пересобрать, чтобы она исчезла. А для прочих - вроде никто не жалуется.

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

Re: LuaFAR for Editor

Post by John Doe »

А для прочих - вроде никто не жалуется.
Кто ж знает как оно может проявиться в других.
Наверно стоит тоже на мантис.

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

Re: LuaFAR for Editor

Post by Shmuel »

John Doe wrote:
А для прочих - вроде никто не жалуется.
Кто ж знает как оно может проявиться в других.
Наверно стоит тоже на мантис.
С точки зрения "правил игры", т.е. документации, вроде ничего не нарушено - я не помню, чтобы она гарантировала невызов экспортируемых функций плагина Фаром во время вызова SetStartupInfoW. Я в LuaFAR-плагинах основывался на "невызове", и до 3968 неприятностей с этим не было. Сейчас сделал "защиту", но, возможно, это то, что должно было быть с самого начала. Так что репортить вроде как нечего, т.к. с точки зрения документации ничего не нарушено.

User avatar
zg
zero-gravity
Posts: 5840
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 151 times
Contact:

Re: LuaFAR for Editor

Post by zg »

SetStartupInfoW вызывается синхронно. т.е. если не вызывать фарапи внутри SetStartupInfoW, то никакой другой экспорт не дёрнется. если вызывать, то может дёрнуться. так что нужно смотреть, что конкретно вызывается и тогда уже решать, баг это или нет.

вообще, количество хаков на квадратный символ в manager.cpp превышает все мыслимые нормы, поэтому я сейчас переписываю оконный менеджер. ввиду сильной завязанности фара в целом на внутренности старого менеджера, происходит это не так быстро, как хотелось бы, но надежда пока есть. так что если это всё не критично, лучше подождать.

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

Re: LuaFAR for Editor

Post by Shmuel »

zg wrote:SetStartupInfoW вызывается синхронно. т.е. если не вызывать фарапи внутри SetStartupInfoW, то никакой другой экспорт не дёрнется. если вызывать, то может дёрнуться. так что нужно смотреть, что конкретно вызывается и тогда уже решать, баг это или нет.
Там вызывается Message, а Фар вызывает ProcessEditorEventW.

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

Re: LuaFAR for Editor

Post by John Doe »

Ещё одно следствие 3968
Установлен пакет lfa_config.
Макросах есть обработчик
  1. local F = far.Flags
  2. Event{ description="test"; group="EditorEvent";
  3.   condition=function(id,Event) return Event==F.EE_CLOSE end;
  4.   action=function(...)
  5.     far.Show(...)
  6.   end
  7. }
Выбираю в панелях файл, жму F4, ShiftF4, ShiftEnter Enter [Reload]
Получаю ошибку

Code: Select all

╔═════════════════════════ Error ═════════════════════════╗
║ Failed to set value "true" for parameter "SavePosition" ║
╟─────────────────────────────────────────────────────────╢
║                         { OK }                          ║
╚═════════════════════════════════════════════════════════╝

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

Re: LuaFAR for Editor

Post by John Doe »

John Doe wrote:Ещё одно следствие 3968
В 3987 уже не воспроизводится

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

Re: LuaFAR for Editor

Post by John Doe »

Far build 4059
Имеется такой обработчик:
  1. Event {
  2.   group="ViewerEvent";
  3.   action=function(id,Event,param)
  4.     viewer.Quit(id)
  5.   end;
  6. }
При нажатии F3 появляется

Code: Select all

╔═════════ AddToMenu ═════════╗
║ Key `' is already allocated ║
╟─────────────────────────────╢
║           { OK }            ║
╚═════════════════════════════╝
После закрытия диалога возникает ошибка:
После закрытия фар падает.

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

Re: LuaFAR for Editor

Post by Shmuel »

Наверное, в Фаре надо искать проблему.

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

Re: LuaFAR for Editor

Post by John Doe »

Shmuel wrote:Наверное, в Фаре надо искать проблему.
По поводу падения написал в соответствующую тему.

Но что насчёт ошибки о которой говорится в диалоге lf4ed?
Подозреваю ситуацию когда вьювер оказывается закрыт тоже надо учесть?
Или это надо сделать не в плагине, а в пакете context?

P.S.
Похоже об этом же я писал на мантис: http://bugs.farmanager.com/view.php?id=2738, но не уверен, что будет исправлено.

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

Re: LuaFAR for Editor

Post by Shmuel »

John Doe wrote:Но что насчёт ошибки о которой говорится в диалоге lf4ed?
Подозреваю ситуацию когда вьювер оказывается закрыт тоже надо учесть?
Или это надо сделать не в плагине, а в пакете context?
Ошибку выдаёт context, значит там и надо начинать разбираться. А падение происходит и без context'а. Разбираться имеет смысл после починки падения.

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

Re: LuaFAR for Editor

Post by John Doe »

Ok, хотя моя версия такова:

В VE_READ lf4ed выдаёт на экран предупреждение о неверном шорткате, и получает управление обратно только после закрытия сообщения.
А за это время другой плагин успевает закрыть вьювер, но lf4ed не в курсе (не обработал VE_CLOSE?) поэтому продолжает как ни в чём ни бывало, и все дальнейщие функции работающие со вьювером возвращают nil.

В результате возникает ошибка, которую и отображает lf4ed. Вот тут стоит разобраться, как не попасть в такую ситуацию.

А то, что после закрытия сообщения фар падает, это другой вопрос, и с предыдущим не связан.

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

Re: LuaFAR for Editor

Post by Shmuel »

John Doe wrote:Ok, хотя моя версия такова:[....]
Эта версия абсолютно не соответствует тому, что происходит на самом деле.

P.S. Но вызов плагином в цикле обработчиков событий пакетов действительно не учитывает того, что вьювер или редактор могут быть в процессе закрыты (даже одним из тех же обработчиков). Это надо будет исправить в плагине.

User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: LuaFAR for Editor

Post by Aidar »

John Doe wrote:...После закрытия диалога возникает ошибка:
После закрытия фар падает.
1. Какая версия LuaFAR context? В версии на GitHub в detectType.lua 361-я строка пустая.
2. В LuaFAR context считается, что первым приходит событие EE_READ/VE_READ, а для других задействованных событий считается, что приходит корректный id редактора/просмотрщика (см. handleType.lua, обработчики editorEvent и viewerEvent).

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

Re: LuaFAR for Editor

Post by John Doe »

1. 3.1.0.0
2. В последних версиях фара уже не так...

User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: LuaFAR for Editor

Post by Aidar »

John Doe wrote:1. 3.1.0.0
Ясно. В общем для случая просмотрщика не срабатывает viewer.GetInfo, возвращается nil.
John Doe wrote:2. В последних версиях фара уже не так...
Да, заметил.

Видимо, эту часть пакета надо переделать, как появится время.

Post Reply

Return to “Обсуждение плагинов”