о событиях в редакторе

Разработка Far.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: о событиях в редакторе

Post by NightRoman »

Latest post of the previous page:

Мне было бы проще строить плагин, если бы существовали события редактора, которые гарантированно приходят первыми и последними и только один раз. Пусть в этот момент редакторы и не полноценные (так обстоит дело с ee_close). Если этого не будет, то жить тоже можно, но не проще. Правда, будет совсем непросто, если EE_CLOSE не будет последним или неоднократным, но, надеюсь, до этого не дойдет.

Мой код для событий редактора выглядит так: Editor0::AsProcessEditorEvent в https://code.google.com/p/farnet/source ... ditor0.cpp Привожу его не для того, чтобы что-то доказать, просто пусть будет упомянут. Код уже частично адаптирован к новым условиям и еще, вероятно, будет переделываться.

Да, есть особая ситуация, когда плагин грузится при уже открытых редакторах, то есть в такой ситуации первого события не будет. Но для моего плагина она особая, и это нормально и ожиданно, что уже загруженные редакторы могут быть неполноценно охвачены плагином. Но с остальными штатными ситуациями хотелось бы простоты и определенности с первым и последним событием.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: о событиях в редакторе

Post by John Doe »

zg wrote:для чего нужно действие по EE_READ? без него как раньше, так и сейчас должно всё прекрасно работать.
На мантисе есть запись о том, что EE_GOTFOCUS может не приходить.
В любом случае, я ведь не спорю что код можно адаптировать к любым условиям.
Но вопрос удобства остаётся, присоединяюсь к предыдущему посту NightRoman.
zg wrote:
John Doe wrote:Разница в том, что EE_CHANGE требует подписки и вообще используется намного реже.
неформализуемая разница.
Удобно иметь событие, приходящее первым.
И не страшно, если EE_CHANGE будет единственным исключением.

Или, как уже предлагалось, завести специальное ограниченное событие EE_INIT.

Да, можно оставить как есть, приспособимся и так.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: о событиях в редакторе

Post by John Doe »

EE_READ приходит в редактор один раз. Нет сейчас в фаре такой ситуации, чтобы EE_READ пришло второй раз.
Перезагрузка файла закрывает текущую копию редактора и открывает новую.

VE_READ же может приходить во вьювер сколько угодно раз, при смене файла клавишами +/-
При этом VE_GOTFOCUS не приходит.

Просто наблюдения. Полезно задокументировать.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: о событиях в редакторе

Post by zg »

я уже где-то писал, что на мой взгляд при любой перезагрузке ee_read как раз должен приходить. поэтому невижу смысла документировано не логичное поведение.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

о событиях в редакторе

Post by John Doe »

Сейчас EE_CLOSE может оказаться не последним событием: если при обработке этого события вызвать (например) диалог, то следом придут EE_KILLFOCUS и EE_GOTFOCUS.

Если нельзя сделать событие EE_CLOSE последним, то стоит хотя бы осветить подводные камни в Энциклопедии.
Post Reply

Return to “Development”