Технические подробности - Макросы

Programming Far Manager plugins

Технические подробности

Хранение макросов

Все макрокоманды хранятся в SQLite базе macros.db

Макрокоманды делятся на 17 областей действий (см. Области действия) и 2 области для хранения глобальных переменных и констант:

Область Назначение
Shell Файловые панели
Info Информационная панель
QView Панель быстрого просмотра
Tree Панель дерева папок
Search Быстрый поиск в панелях
FindFolder Панель поиска папок
Viewer Внутренняя программа просмотра
Editor Редактор
Dialog Диалоги
Menu Прочие меню
MainMenu Основное меню
UserMenu Пользовательское меню
Disks Меню выбора диска
Shell.AutoCompletion Список автодополнения в панелях
Dialog.AutoCompletion Список автодополнения в диалогах
Help Система помощи
Other Режим копирования текста с экрана
Common Макросы из этой области работают везде. Far Manager просматривает эту область последней.
Vars

Область для глобальных переменных, которые Far Manager считывает при старте.

В эту область можно писать с помощью функции msave().

Consts

Область для глобальных констант, которые Far Manager считывает при старте.

Если Far Manager запущен с ключами /e или /v, то не грузятся макросы из следующих макрообластей: Shell, Info, QView, Tree, Search, FindFolder, MainMenu, Disks, Shell.AutoCompletion, Dialog.AutoCompletion.

На каждую макрокоманду в базе заводится отдельная запись со следующими полями:

Поле Описание
area Имя макрообласти
key Назначенная клавиша
flags Флаги для макрополедовательности (перечисленные через символ '|'):
Флаг Default Описание
DisableOutput 0

Запретить на время выполнения вывод на экран.

При записи нового макроса значение этого параметра выставляется в 1 (запретить вывод на экран).

Если параметр отсутствует, то вывод на экран во время исполнения макроса разрешён.

RunAfterFARStart 0 Выполнять после запуска Far Manager. Флаг актуален только для макросов, стартующих в области Shell.
EmptyCommandLine 0 Выполнять, только если командная строка пуста
NotEmptyCommandLine 0 Выполнять, только если командная строка не пуста
NoFilePanels 0 Не выполнять для файловой панели
NoFilePPanels 0 Не выполнять если пассивная панель - файловая
NoPluginPanels 0 Не выполнять для плагиновой панели
NoPluginPPanels 0 Не выполнять если пассивная панель - плагиновая
NoFolders 0 Не выполнять если текущий элемент - папка
NoPFolders 0 Не выполнять если текущий элемент - папка (пассивная панель)
NoFiles 0 Не выполнять если текущий элемент - файл
NoPFiles 0 Не выполнять если текущий элемент - файл (пассивная панель)
Selection 0 Выполнять, только если на панели есть отмеченные файлы/папки или есть выделенный блок в редакторе/программе просмотра
PSelection 0 Выполнять, только если на панели есть отмеченные файлы/папки (пассивная панель)
NoSelection 0 Выполнять, если нет отмеченных файлов/папок
NoPSelection 0 Выполнять, если нет отмеченных файлов/папок (пассивная панель)
EVSelection 0 Выполнять, если отмечен блок в редакторе, программе просмотра, в строках ввода в диалогах.
NoEVSelection 0 Выполнять, если не отмечен блок в редакторе, программе просмотра, в строках ввода в диалогах.
NoSendKeysToPlugins 0 Специальный режим: нажимаемые клавиши при записи и воспроизведении не будут передаваться плагинам.
Например: DisableOutput|Selection - не выводить на экран и если есть выделенные файлы/блок.
description Описание макроса
sequence Макропоследовательность

При импорте каждая запись в XML-файле имеет вид:

<macro area="%AREA%" key="%KEY%" flags="%FLAGS%" description="%DESC%">%SEQUENCE%</macro>

В значениях area, key и description символы "<>& должны быть заменены на &quot; &lt; &gt; и &amp;, соответственно.

Если макропоследовательность %SEQUENCE% содержит символы <>&, то последовательность должна быть обрамлена в "скобки": <![CDATA[%SEQUENCE%]]>

Обязательными являются параметры area и key, остальные могут отсутствовать и принимать значение по умолчанию.

Если %SEQUENCE% отсутствует, то при импорте xml-файла макрос, заданный параметрами area и key будет удален из базы.

Последовательность "sequence" содержит строковое представление макрокоманды. Каждая клавиша имеет свой строковый эквивалент, разделителем клавиш является пробел, табуляция, или символы конца строки.

При старте Far Manager компилирует последовательность "sequence" во внутренний байткод. Если в процессе компиляции обнаружена ошибка, то макрос "отбрасывается".

Условия запуска макроса

Перед исполнением макроса Far Manager проверяет условия запуска в следующей последовательности:

  1. NoSendKeysToPlugins
  2. EmptyCommandLine + NotEmptyCommandLine
  3. NoFilePanels + NoPluginPanels
  4. NoFilePPanels + NoPluginPPanels
  5. NoFolders + NoFiles
  6. NoPFolders + NoPFiles
  7. если не в Viewer, Editor и Dialog:
    • Selection + NoSelection
    • PSelection + NoPSelection
  8. если в Viewer, Editor и Dialog:
    • EVSelection + NoEVSelection

Дополнительные параметры

Все дополнительные параметры хранятся в SQLite-базе generalconfig.db (key="KeyMacros").

Имя Тип Default Описание
DateFormat TEXT %a %b %d %H:%M:%S %z %Y Формат вывода даты/времени по умолчанию (см. date())
CONVFMT TEXT %.6g Формат преобразования чисел (констант и переменных) с плавающей точкой в строку.
KeyRecordCtrlDot TEXT Ctrl. Имя комбинации клавиш для записи макроса в общем режиме (см. "Запись макроса").
KeyRecordCtrlShiftDot TEXT CtrlShift. Имя комбинации клавиш для записи макроса в специальном режиме (см. "Запись макроса").
Смотрите также: