MacroAddMacro

Programming Far Manager plugins

MacroAddMacro

Структура MacroAddMacro используется в функции MacroControl для загрузки макропоследовательности в Far Manager.
struct MacroAddMacro
{
  size_t StructSize;
  void *Id;
  const wchar_t *SequenceText;
  const wchar_t *Description;
  FARKEYMACROFLAGS Flags;
  INPUT_RECORD AKey;
  enum FARMACROAREA Area;
  FARMACROCALLBACK Callback;
  intptr_t Priority;
};

Элементы

StructSize
Это поле должно содержать размер структуры MacroAddMacro. Перед использованием структуры плагин должен заполнить поле.
Id
Уникальный, в рамках плагина, идентификатор макропоследовательности.
SequenceText
Строка, содержащая макрос в текстовом виде.
Если строка начинается с символа @, то используется следующий формат: @<имя файла-скрипта> [<параметры скрипта>]
  • В имени файла допустимо использование переменных окружения.
  • Опциональные параметры скрипта представляют список выражений, разделённых запятыми. Выражения должны использовать тот же язык программирования, что и скрипт.
  • Пример: @%MyFarScripts%\calc.lua 'factorial', 3+5
Description
Строка, содержащая описание макроса.
Flags
Комбинация флагов (тип FARKEYMACROFLAGS):
ФлагОписание
KMFLAGS_ENABLEOUTPUT Отображать на экране результат работы каждой клавиши.
KMFLAGS_NOSENDKEYSTOPLUGINS Не передавать клавиши редакторным плагинам (плагинам, экспортирующим функцию ProcessEditorInputW).
KMFLAGS_SILENTCHECK Не отображать на экране результат проверки макропоследовательности.
KMFLAGS_LANGMASK Трёхбитовая область, в которой задаётся язык макропоследовательности.
KMFLAGS_LUA Язык макропоследовательности - Lua (значение по умолчанию).
KMFLAGS_MOONSCRIPT Язык макропоследовательности - MoonScript.
KMFLAGS_NONE Нулевой флаг.
AKey
Клавиша вызова макроса, структура INPUT_RECORD.
Area
Макрообласть типа FARMACROAREA, куда поместить макропоследовательность.
Callback
Функция, выполняемая Far Manager перед непосредственным выполнением макропоследовательности SequenceText. Синтаксис функции:
 intptr_t (WINAPI *FARMACROCALLBACK)(void *Id,FARADDKEYMACROFLAGS Flags);
Где: Id - идентификатор (MacroAddMacro.Id). Flags - сейчас не используются.
Функция может что-то проверить и вернуть TRUE - запустить макрос, или FALSE - не запускать.
Priority
Приоритет макроса.

Замечания

Смотрите также: