Клавиатурный макрос — это заранее заданная последовательность событий ввода, которая может рассматриваться как команда и определять нажатие клавиши. Lisp-представление клавиатурного макроса — это строка или вектор, содержащий события. Не путайте клавиатурные макросы с макросами Lisp (см. Макросы).
Эта функция выполняет kbdmacro как последовательность событий. Если kbdmacro является строкой или вектором, то события в нем выполняются точно так же, как если бы они были введены пользователем. Последовательность не должна представлять собой одну последовательность нажатий клавиш; обычно определение клавиатурного макроса состоит из нескольких последовательностей нажатий клавиш, соединенных вместе.
Если kbdmacro является символом, то используется его определение функции вместо kbdmacro. Если это другой символ, этот процесс повторяется. В конечном итоге результат должен быть строкой или вектором. Если результат не является символом, строкой или вектором, сигнализируется об ошибке.
Аргумент count — это количество повторений; kbdmacro выполняется столько раз. Если count опущен или равен nil, kbdmacro выполняется один раз. Если он равен 0, kbdmacro выполняется снова и снова до тех пор, пока не возникнет ошибка или неудачный поиск.
Если loopfunc не равен nil, это функция, которая вызывается без аргументов перед каждой итерацией макроса. Если loopfunc возвращает nil, то выполнение макроса останавливается.
См. Чтение одного события для примера использования execute-kbd-macro.
Эта переменная содержит строку или вектор, определяющие клавиатурный макрос, который в данный момент выполняется. Она равна nil, если в данный момент макрос не выполняется. Команда может проверить эту переменную, чтобы вести себя по-разному при запуске из выполняющегося макроса. Не устанавливайте эту переменную самостоятельно.
Эта переменная не равна nil тогда и только тогда, когда определяется клавиатурный макрос. Команда может проверить эту переменную, чтобы вести себя по-разному во время определения макроса. Значение равно append при добавлении к определению существующего макроса. Команды start-kbd-macro, kmacro-start-macro и end-kbd-macro устанавливают эту переменную — не устанавливайте ее самостоятельно.
Переменная всегда локальна для текущего терминала и не может быть локальной для буфера. См. Несколько терминалов.
Эта переменная содержит определение последнего определенного клавиатурного макроса. Ее значение — строка или вектор, или nil.
Переменная всегда локальна для текущего терминала и не может быть локальной для буфера. См. Несколько терминалов.
Этот обычный хук выполняется, когда клавиатурный макрос завершается, независимо от того, что вызвало его завершение (достижение конца макроса или ошибка, которая преждевременно завершила макрос).