ProcessMacroFuncW

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

Re: ProcessMacroFuncW

Post by NightRoman »

Latest post of the previous page:

SUSim
Идея MacroPrefix, по аналогии с CommandPrefix, в PluginInfo и аналогичным кэшированием - ИМХО, идеальная, есть проверенный механизм, на который нареканий, кстати, практически нет. Остальная часть предложения у меня вызывает сомнения. Должна быть обычная функа обработчик префикса, только понавороченней, чтоб принять сколько угодно строк и вернуть сколько угодно строк (освобождение возвращенных строк надо тоже продумать).

Парсинга аргументов плагину не избежать. Но не до такой же степени все валить на плуг, как парсить "%a=sin(%b*pi/2)" - этим пусть макродвижок занимается, плуг пусть только "sin" префикс предоставляет, а макрос принимает результат и уже использует его в выражении макроса, как обычно.

(но это все вразрез с текущей реализацией идет, обсуждаем чисто гипотетически)

User avatar
NightRoman
Posts: 5924
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 13 times
Been thanked: 14 times
Contact:

Re: ProcessMacroFuncW

Post by NightRoman »

Как дела на этом фронте, можно поинтересоваться?

User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: ProcessMacroFuncW

Post by Skirda »

пока никак.
Затыка:
а) в методе узнаваемости компилятором функций, предоставляемым плагинами. Их, методов, несколько:
1. ручками в реестре
2. плагином, путем жмаканья кнопки в конфигурации плагина, с прописанием в реестре
3. при первой загрузке плагина: фар спросил, плагин выдал на гора
б) в методе вызова:
1. только "этот" плагин - прямой вызов нужной длл
2. любой, кто обработал "эту" функцию - сабжевая функция вернула труе
3. ...
We are the Borg. You will be assimilated.
So Say We All!

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

Re: ProcessMacroFuncW

Post by John Doe »

а)3.фар спросил, и записал в реестр (при условии что такой записи ещё нет).
б)1.только тот, что прописан в реестре.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 11 times

Re: ProcessMacroFuncW

Post by Max Rusov »

Skirda wrote:Затыка...
А не рассматривался вариант, который я предлагал здесь:
http://forum.farmanager.com/viewtopic.p ... 746#p69746

IMHO, это было бы идеальным компромиссом.

User avatar
NightRoman
Posts: 5924
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 13 times
Been thanked: 14 times
Contact:

Re: ProcessMacroFuncW

Post by NightRoman »

А я предлагаю начать с простого легко реализуемого почти готового шага и посмотреть как оно в в принципе работает. Если выяснится, что в идее вообще что-то проглядели, то и более сложные варианты не нужны (либо мы будем лучше подготовлены, уже с опытом).

Простой первый шаг - это вызывать плагины из макросов по обычным, уже имеющимся префиксам. Все для это уже готово, никто на сам механизм префиксов не жалуется особо. Ничто не мешает вызывать по префиксу не только из комстроки, но из макросов. Я бы сказал даже - это напрашивается. Параметр - одна строка, все как и при вызове из комстроки. Возврат в макрос - ничего, все обработано Фаром обычным образом (либо можно подумать, но что-то тривиальное, конечно, число, чтобы было совместимо с OpenPluginW().

То, что предлагается, не противоречит первоначальной задумке. Вызов по имеющемуся префиксу - это одно. Сложные функи с хитрыми параметрами - это другое. Могут и вместе существовать. Если будет только первый вариант - это лучше, чем ни одного.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 11 times

Re: ProcessMacroFuncW

Post by Max Rusov »

NightRoman

Ну а чем это, по сути, отличается от CallPlugin? Только расширить его строковым параметром и все. От макросов хотелось бы большего, конечно.

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

Re: ProcessMacroFuncW

Post by John Doe »

NightRoman wrote:Ничто не мешает вызывать по префиксу не только из комстроки, но из макросов.
Мысль хорошая, особенно если обобщить её до функции Exec(), способной запускать всё.

User avatar
NightRoman
Posts: 5924
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 13 times
Been thanked: 14 times
Contact:

Re: ProcessMacroFuncW

Post by NightRoman »

Max Rusov wrote:Ну а чем это, по сути, отличается от CallPlugin? Только расширить его строковым параметром и все. От макросов хотелось бы большего, конечно.
В принципе ничем не отличается, если CallPlugin будет раширен строковым параметром, и будет объявлено, что этот путь вызова узаконен, то все ОК. Но ведь этого нет. CallPlugin и без параметра, и вне закона.

Путь с префиксом интуитивен и понятен. Хотим - печатаем в комстроке, хотим - потом забиваем эту команду в макрос. Требует меньше документации, имеет большую сферу применения (и комстрока, и макросы, а синтаксис комстроки один, определенный плагином).

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

Re: ProcessMacroFuncW

Post by John Doe »

Всё понятно, кроме одного: почему никто не слушает Валентина...
Зачем нужны все предлагаемые "упрощения", если можно сделать по-нормальному?

User avatar
NightRoman
Posts: 5924
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 13 times
Been thanked: 14 times
Contact:

Re: ProcessMacroFuncW

Post by NightRoman »

John Doe wrote:Зачем нужны все предлагаемые "упрощения", если можно сделать по-нормальному?
Я объяснил. Наличие простого варианта не противоречит "нормальному". Но простой вариант - это логическое и простое расширение уже имеющегося функционала (комстрока), пусть будет и работает. Удобно уже готовые комстроки использовать хоть в макросе, хоть в юзерменю. Простой вариант легче стартануть, начать получать пользу и одновременно изучать и устранять некоторые проблемы, которые будут общими и для "нормального" варианта. Потом и "нормальный" вариант будет проще реализовать, чем на пустом месте. А еще может все увидят, что "нормальный" не так уж и нужен.

P.S. Конечно, множества комстрок для комстроки и для макросов не будут совпадать, но пересение непусто, и это уже хорошо. Из макросов, конечно, можно будет сделать больше, чем из комстроки, одних областей вызова уже больше хотя бы (редактор, диалоги), то есть некоторые префиксы плагина будут уже специально введены и документированы для специального использования в специальных областях.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 11 times

Re: ProcessMacroFuncW

Post by Max Rusov »

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

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

Re: ProcessMacroFuncW

Post by John Doe »

NightRoman wrote:"Нормальный" вариант будет проще реализовать.
Так ведь в титульном посте "нормальный" вариант уже есть, практически готовый, или я чего-то не понимаю?

User avatar
NightRoman
Posts: 5924
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 13 times
Been thanked: 14 times
Contact:

Re: ProcessMacroFuncW

Post by NightRoman »

Max Rusov wrote:Никто не против "простого" варианта. Более того - он уже есть (CallPlugin). Ну, можно, наверное, сделать CallPluginEx, со строкой. Просто в этой теме обсуждался "хороший" вариант. А Вы, такое впечатление, задались целью всех от него отговорить.
Простого варианта - нет. Недоделанный (нет параметров) - это все-таки нет. Пояснение: мне (FarNet) нужен минимум один параметр, чтобы хоть знать к какому FarNet модулю это относится, их ведь несколько, а FarNet - это просто диспетчер.

Я не пытаюсь отговорить от предлагаемого варианта. И не пытаюсь его критиковать, хоть и не скрываю, что сам не стал бы такую реализацию делать. Конструктивно пытаюсь предложить практически полезный вариант, который и более сложному тоже будет полезен в мелочах. Заводить для этого отдельную тему? Неужели, правда, будет смысл?

User avatar
NightRoman
Posts: 5924
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 13 times
Been thanked: 14 times
Contact:

Re: ProcessMacroFuncW

Post by NightRoman »

Skirda
С затыкой понятно... Но обдумывание-то продолжается? Прошу не сердится на мою назойливость, я выждал пару месяцев-таки. Желаю успехов.

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

Re: ProcessMacroFuncW

Post by John Doe »

NightRoman wrote:С затыкой понятно...
Что именно понятно? Выше перечислены альтернативы.

Post Reply

Return to “Development”