Нет, извините. Не существует тривиального способа преобразования макроса emacs в elisp.
Обновление: В Emacs была проделана определенная работа, чтобы начать этот путь. См. эту тему в качестве отправной точки. Это все еще невозможно (июнь 2010 г.), но есть активность.
Первая причина, по которой я могу придумать, связана с интерактивными командами и переводом нажатий клавиш в надлежащие аргументы для функций.
Подумайте о следующей последовательности:
C-x b .em TAB RET
Это начинает команду для переключения в буфер, вводит три символа, использует завершение TAB для его завершения и RET для принятия. Эквивалентный шрифт для конечного результата (в сеансе emacs, в котором завершение TAB уникально):
(switch-to-buffer ".emacs")
Думая о завершении, есть также взаимодействия с расширением всех типов (dabbrev
, hippie-expand
и т. Д.).
Начальная точка может быть M-x edit-last-kbd-macro , которая (в моем случае) показывает это:
;; Keyboard Macro Editor. Press C-c C-c to finish; press C-x k RET to cancel.
;; Original keys: C-x b .em <tab> RET
Command: last-kbd-macro
Key: none
Macro:
C-x b ;; switch-to-buffer
.em ;; self-insert-command * 3
<tab> ;; pabbrev-expand-maybe
RET ;; newline-and-indent
Который, по крайней мере, дает вам некоторые имена функций. Но вы увидите, что RET помечен как 'newline-and-indent
, что неверно, поскольку во время выполнения макроса минибуфер активен, а привязка фактически 'minibuffer-complete-and-exit
. Аналогично, правильное связывание для TAB равно 'minibuffer-complete
.