LuaFAR for Editor

Здесь можно обсудить ваш любимый плагин.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: LuaFAR for Editor

Post by zg »

Latest post of the previous page:

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

вообще, количество хаков на квадратный символ в manager.cpp превышает все мыслимые нормы, поэтому я сейчас переписываю оконный менеджер. ввиду сильной завязанности фара в целом на внутренности старого менеджера, происходит это не так быстро, как хотелось бы, но надежда пока есть. так что если это всё не критично, лучше подождать.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

zg wrote:SetStartupInfoW вызывается синхронно. т.е. если не вызывать фарапи внутри SetStartupInfoW, то никакой другой экспорт не дёрнется. если вызывать, то может дёрнуться. так что нужно смотреть, что конкретно вызывается и тогда уже решать, баг это или нет.
Там вызывается Message, а Фар вызывает ProcessEditorEventW.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: LuaFAR for Editor

Post by John Doe »

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

Code: Select all

╔═════════════════════════ Error ═════════════════════════╗
║ Failed to set value "true" for parameter "SavePosition" ║
╟─────────────────────────────────────────────────────────╢
║                         { OK }                          ║
╚═════════════════════════════════════════════════════════╝
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: LuaFAR for Editor

Post by John Doe »

John Doe wrote:Ещё одно следствие 3968
В 3987 уже не воспроизводится
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: LuaFAR for Editor

Post by John Doe »

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

Code: Select all

╔═════════ AddToMenu ═════════╗
║ Key `' is already allocated ║
╟─────────────────────────────╢
║           { OK }            ║
╚═════════════════════════════╝
После закрытия диалога возникает ошибка:
После закрытия фар падает.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

Наверное, в Фаре надо искать проблему.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: LuaFAR for Editor

Post by John Doe »

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

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

P.S.
Похоже об этом же я писал на мантис: http://bugs.farmanager.com/view.php?id=2738, но не уверен, что будет исправлено.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

John Doe wrote:Но что насчёт ошибки о которой говорится в диалоге lf4ed?
Подозреваю ситуацию когда вьювер оказывается закрыт тоже надо учесть?
Или это надо сделать не в плагине, а в пакете context?
Ошибку выдаёт context, значит там и надо начинать разбираться. А падение происходит и без context'а. Разбираться имеет смысл после починки падения.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: LuaFAR for Editor

Post by John Doe »

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

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

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

А то, что после закрытия сообщения фар падает, это другой вопрос, и с предыдущим не связан.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 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: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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. В последних версиях фара уже не так...
Да, заметил.

Видимо, эту часть пакета надо переделать, как появится время.
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 »

Aidar wrote:Видимо, эту часть пакета надо переделать, как появится время.
Добавил проверки и подправил логику работы с ?E_READ.
context_scripts_test.7z
Только для тестирования!
(11.55 KiB) Downloaded 129 times
Сделайте резервную копию каталога context\scripts\ и распакуйте файлы из архива в этот каталог.

P.S. Просьба написать в эту тему или тему LuaFAR context, помогла ли "переделка" пакета.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: LuaFAR for Editor

Post by John Doe »

Дело в том, что в 4096 проблема уже не воспроизводится и со старым context.
Видимо в фаре подкрутили.

Update
Это с вьювером не воспроизводится, а редактором проблема есть.
Сейчас проверю новый context.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: LuaFAR for Editor

Post by John Doe »

В новом не падает.
Но когда в фаре починят, то и в старом проблема вероятно уйдёт.
Post Reply

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