Позволить плагину менять заголовок редактора "насовсем"

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

Если не ошибаюсь, согласно АПИ, заголовок редактора будет восстановлен Фаром, как только плагин отработал свой вызов. Почему нельзя менять заголовок редактора командой плагина *насовсем*, ну точнее, до очередного изменения? Это принципиальное ограничение и шансов на это нет, или-таки в принципе это реально?

Согласен, что для обычного редактора менять заголовок насовсем смысла особого нет, пусть показывает путь файла (ну или стартовый заголовок). Но я вот повадился редактор использовать, как командную консоль в PowerShellFar. Есть три типа консоли: default, local, remote. Хотелось бы тип отразить в заголовке и имя компа, если это remote консоль. Это я могу при открытии редактора, хорошо. Но плагин также позволяет поменять тип консоли динамически (ну или оставить тип remote, но подключить ее удаленно к другому компу, имя которого захочется в заголовке поменять) - и вот тут облом. Жаль. Да и текущий location так можно было бы так показать. А при желании и фантазии и бегущую строку можно сделать через idle и так далее (а в FarNet я мог бы это просто как фичу для .NET плагинов реализовать).

Словом, два вопроса:
- имеет ли смысл это запостить на мантис, как пожелание?
- нет ли обходного пути более-менее приемлимого?
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

Отправил на мантис, чтобы не потерялось
http://bugs.farmanager.com/view.php?id=1334
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by Centaur »

Я тут совершенно случайно наступил на воркэраунд. Я им пользуюсь, но, как честный человек, должен зарепортить.

А именно, ECTL_SETTITLE, выполненный из OpenPluginW — автовосстанавливается, а из ProcessEditorInputW — нет.
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

Centaur wrote:А именно, ECTL_SETTITLE, выполненный из OpenPluginW — автовосстанавливается, а из ProcessEditorInputW — нет.
О, так вот просто, да? Попробовал, работает. Отлично!

Господа разработчики, это не бага случайно - можно пользоваться или будет пофиксено или просто изменено?

В идеале бы хотелось, конечно, прямой метод смены заголовка иметь (что просится на мантисе), но с таким вариантом, как щас, уже можно выкрутиться.
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

Возможно, было бы лучше, если бы Фар не восстанавливал заголовок, как это делается (в некоторых случаях, как выясняется). На ECTL_SETTITLE в документации была бы простая строчка "меняет заголовок". Просто, понятно, интуитивно. Если плагину надо восстанавливать заголовок - нет проблем, сохранил, поработал, восстановил. А сейчас документация по ECTL_SETTITLE либо неполна, либо неправильна, либо в Фаре ошибка, что заголовок не восстанавливается в некоторых случаях.

Все ж хотелось бы мнение команды узнать. Где именно баг или недочет - в документации или в Фаре?

UPD. Оказывается Фар уже и так помогает плагину в восстановлении заголовка (сам я не пробовал этот путь):
Для восстановления статусной строки укажите параметр Param равный NULL или пустой строке.
То есть даже не надо плагину сохранять исходный заголовок, а просто вызвать с NULL в конце вызова. Словом, я бы предложил Фару самому не восстанавливать заголовок. Это ИИ. Плагину видней, что именно он хочет.
User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by Skirda »

в общем это баг. он будет вылечен (мантис)
то тебя - "распиши" нужное тебе апи для "заголовканавсегда"
We are the Borg. You will be assimilated.
So Say We All!
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

Skirda wrote:в общем это баг. он будет вылечен (мантис)
то тебя - "распиши" нужное тебе апи для "заголовканавсегда"
Хороший отклик, спасибо. А что именно баг-то? Тут сразу несколько вариантов. Или просто расписать "как бы мне хотелось"? :) Лучше уж обсудить и отпишу на мантис то, к чему придем.
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

Вариант, какой бы мне хотелось, я уже написал - Фар НЕ ВОССТАНАВЛИВАЕТ ЗАГОЛОВОК, если не просят. Просьба - NULL. Все, больше ничего не надо, АПИ остается, как есть.
-- Надо плагину временно менять заголовок, меняет и в конце вызова сам восстанавливает
-- Надо плагину насовсем поменять заголок, просто меняет - и все
Проще некуда и, главное, такое поведение ожиданное, если не читать документацию (которая будет тривиальной).
UPD: ожиданное, кроме NULL, конечно. Я бы эту фичу убрал, зачем усложнять? Если плаг хочет восстанавливать, то пусть и сохранит сначала, это вполне интуитивно. Но я не против услуги типа NULL - восстановить заголовок.
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

Skirda
Я напишу на мантис, но ты не подтвердил, что именно является ошибкой. Варианты:
-- Что Фар восстанавливает заголовок при вызове ECTL_SETTITLE из OpenPluginW (хотелось бы именно это исправить...)
-- Что Фар не восстанавливает заголовок при вызове ECTL_SETTITLE из ProcessEditorInputW
-- Что документация неверна, например, не описаны все нюансы
-- Что-то еще пропустил?
User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by Skirda »

NightRoman wrote: Skirda
Я напишу на мантис, но ты не подтвердил, что именно является ошибкой. Варианты:
-- Что Фар восстанавливает заголовок при вызове ECTL_SETTITLE из OpenPluginW (хотелось бы именно это исправить...)
Восстанавливается заголовок вот здесь: plugins.cpp::PluginManager::CommandsMenu() в самом конце...
NightRoman wrote:-- Что Фар не восстанавливает заголовок при вызове ECTL_SETTITLE из ProcessEditorInputW
я подразумевал именно это.


С учетом твоей хотелки, думаю, что из PluginManager::CommandsMenu() нужно убрать вызов CurEditor->SetPluginTitle(nullptr)
в этом случае описать, что мол так и так...

IMHO это будет меньшее из зол :-)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

А что остальные думают? Кажется, что если Фар не будет восстанавливать заголовок, то это просто идеально: элементарно сделать, интуитивно, снимает ограничения, оставляет возможным восстановление заголовка (но плагин должен явно попросить (NULL) или сделать восстановление сам).

ОФФ. Хоть это к Фару уже не относится - автовосстановление заголовка вряд ли компатибильно с другими редакторами (я-таки подумываю о реализации Фарнет под что-то еще, когда-нибудь).
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

У меня уже готовый юз-кейс есть в PSF для смены заголовка. Но вот теперь непонятно как быть. Воркераунд найден, но как и ожидалось, выяснилось, что он, скорей, ошибка. Забавно.
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by Centaur »

На самом деле, стоит задуматься. Для чего вообще была сделана фича?

DrawLine показывает там свою подсказку. Мой QuickSearch — текущий шаблон поиска. Это один юзкейс — режим редактора.

FarCmds view:< и edit:< показывают там командную строку, чей выхлоп перехвачен в редактор. PSF, насколько я понимаю, тоже хотел бы менять заголовок, чтобы показать, что редактор представляет интерфейс не к файлу, но к какой-то другой сущности. Это другой юзкейс.

Эти два варианта принципиально отличаются. Во втором случае плагин, претендующий на владение заголовком, только один. В первом их потенциально может быть несколько. Стоит обдумать оба случая и, возможно, предоставить какое-то альтернативное API для отображения статуса/режима.
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Позволить плагину менять заголовок редактора "насовсем"

Post by NightRoman »

Два разных АПИ по смене заголовка - тоже нормальный вариант. Главное, чтобы оба юзкейса были покрыты, а детали уже не так существенны, как будет сделано, так и хорошо.
Post Reply

Return to “Разработка плагинов”