ActlKeyMacro & MCMD_CHECKMACRO

Разработка Far.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

ActlKeyMacro & MCMD_CHECKMACRO

Post by Skirda »

Кроме плагина FarCmds кто-то еще юзает сцепку ActlKeyMacro & MCMD_CHECKMACRO?

А то я готов "поломать" результат работы команды MCMD_CHECKMACRO (и вывести ее из под FAR_USE_INTERNALS).
Сейчас это так (на момент build 1377):

Code: Select all

struct
{
  const wchar_t *ErrMsg1; // сообщение об ошибке
  const wchar_t *ErrMsg2; // кусок сорца макроса
  const wchar_t *ErrMsg3; // куча пробелов с символом '^' в конце, указывающим на место ошибки
} MacroResult;
Будет вот так:

Code: Select all

struct
{
  DWORD ErrCode;  // код ошибки (будет добавлен в АПИ, plugin.hpp)
  const wchar_t *ErrSrc; // кусок сорца макроса
  COORD ErrPos; // строка и позиция в строке, где парсер нашел ошибку
} MacroResult;
возражения есть?
We are the Borg. You will be assimilated.
So Say We All!
User avatar
DrKnS
Posts: 5813
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 10 times
Been thanked: 346 times

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by DrKnS »

Есть мнение, что это в API вообще не нужно.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by Skirda »

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

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by NightRoman »

DrKnS wrote:Есть мнение, что это в API вообще не нужно.
А почему? Фар ведь не много инструментов сам для макро писания предоставляет, значит, ему надо помочь плагинам соответствующим АПИ. Почему бы таким плагинам не проверять макрос от пользователя перед тем, как его пустить в дело, в сохранение, например?
User avatar
DrKnS
Posts: 5813
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 10 times
Been thanked: 346 times

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by DrKnS »

Потому что фар сам проверяет все макросы и при необходимости показывает, что и где не так.

Нет смысла делать одну работу дважды.
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by NightRoman »

DrKnS wrote:Потому что фар сам проверяет все макросы и при необходимости показывает, что и где не так.
Нет смысла делать одну работу дважды.
Хорошо, тогда объясни, как мне сделать так: макрос редактирует\задает пользователь через мой плагин (хоть руками в диалоге, хоть из ПШ скрипта). Код непроверенный. Как его проверить и дать пользователю знать, что код неправильный? Перед сохранением макроса, например.

Или то же самое, но целый пакет макросов через скрипт ПШ добавляется. В какой момент Фар что-то сообщит и для какого именно макроса? С АПИ я бы мог проверить в плагине каждый и вразумительные ошибки по каждому показать.
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by NightRoman »

Еще сценарий. От пользователя поступает серия макросов. Плагин должен их проиграть по схеме:

run macro 1
run plugin job 1
run macro 2
run plugin job 2

Тексты обоих макросов у меня от пользователя с самого начала. Если макрос 2 синтаксически неверен, мне не надо запускать эту кухню вообще. Вопрос - как проверить макрос 2?
User avatar
DrKnS
Posts: 5813
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 10 times
Been thanked: 346 times

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by DrKnS »

OK, обосновал :)
User avatar
DrKnS
Posts: 5813
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 10 times
Been thanked: 346 times

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by DrKnS »

Skirda wrote: Будет вот так:

Code: Select all

struct
{
  DWORD ErrCode;  // код ошибки (будет добавлен в АПИ, plugin.hpp)
  const wchar_t *ErrSrc; // кусок сорца макроса
  COORD ErrPos; // строка и позиция в строке, где парсер нашел ошибку
} MacroResult;
А зачем этот "кусок сорца макроса"?
Лучше, если в ErrPos будет возвращаться строка+позиция относительно исходного сорца, который плагин в SequenceText передал.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by Skirda »

DrKnS wrote: А зачем этот "кусок сорца макроса"?
Лучше, если в ErrPos будет возвращаться строка+позиция относительно исходного сорца, который плагин в SequenceText передал.
ErrPos и так будет передавать ЭТО, а "кусок" - а почему бы и нет? Ну не захочет плагин использовать это поле ну и черт с ним.
Это т.с. доп.инфа.
Если не нравиться, то... в морг ;-)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
DrKnS
Posts: 5813
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 10 times
Been thanked: 346 times

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by DrKnS »

А, ну если ErrPos будет относительно исходного, то пофигу, пусть живёт :)
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by Skirda »

ндя... ErrSrc это не кусок кода будет, а... "то, что вызвало ошибку", слово,...
We are the Borg. You will be assimilated.
So Say We All!
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by NightRoman »

Code: Select all

	MPEC_EXPECTED               = 7,
Странное имя ошибки... Если это не описка, можно пояснить, что за тип ошибки такой? Что-то ожидалось, но в коде этого не оказалось? И это что-то может быть разным, поэтому существительное опущено?
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by NightRoman »

Товарищи, плиз, не выводите мессадж бокс при ошибке. Пусть плагин решает, что делать. У меня может проверка целого пакета макросов идет. И вообще может у плагина идти процедура, которую нельзя прерывать в этот момент диалогом.

Раз уж есть этот мессаджбокс, путь будет. Но, пожалуйста, сделайте его опциональным. Или научите как, если это уже можно.
Param.PlainText.Flags - не для этого?
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: ActlKeyMacro & MCMD_CHECKMACRO

Post by NightRoman »

И еще вопрос: ошибка в самом начале макроса, мне вернули:
ErrPos.Y = 1
ErrPos.X = 0

То есть строки нумеруются с 1, а позиции с 0. Это так и задумано?

Сообщение, о котором я ворчал, показывает 1, 1 - похоже, "так и задумано", как бы Фар смирился. Может, щас хороший момент поправить? Либо все с 0 (я за этот подход ~ позиции в редакторе), либо все с 1.
Post Reply

Return to “Development”