18
A
回答
22
不,对不起。将emacs宏转换为elisp没有简单的方法。
更新: Emacs已经有一些工作开始了这条道路。以this thread为起点。这仍然是不可能的(2010年6月),但有活动。
我能想到的第一个原因是处理交互式命令并将键击转换为适当的函数参数。
认为以下序列组成:
CX b .EM TAB RET
这开始命令切换到缓冲器,类型三个字符,使用TAB完成来完成它和RET接受。为最终结果的等效口齿不清(在其中完成TAB是唯一的一个emacs的会议)是:完成
(switch-to-buffer ".emacs")
思考,也有与所有类型(dabbrev
,hippie-expand
等)的膨胀的相互作用。
的一个起点可以M-X编辑,最后大骨节病宏这(对我来说)显示了这个:
;; 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
。
4
我做了一个包,允许几乎正是这种在https://github.com/Silex/elmacro
它有一些怪癖,但它工作得很好...例如,下面的宏:
F3 C-e M-b M-u C-a C-n F4
生成以下的elisp :
(defun upcase-last-word()
"Change me!"
(interactive)
(move-end-of-line 1)
(backward-word 1)
(upcase-word 1)
(move-beginning-of-line 1)
(next-line 1 1))
相关问题
- 1. 将LaTeX转换为XML elisp
- 2. 将宏转换为模板
- 3. 将Excel宏转换为C#?
- 4. 将C宏转换为VHDL
- 5. 将宏图转换为gwt
- 6. 将VBA简单宏转换为LibreOffice宏
- 7. 将OOo宏转换为Excel宏
- 8. emacs中的bignum/elisp
- 9. 什么elisp或宏魔法可以使这个文本转换?
- 10. Emacs:将Unicode子项转换为“*”
- 11. elisp的递归宏
- 12. 将消息值转换为宏?
- 13. Excel宏将xlsx转换为xls
- 14. 如何将C++宏转换为typedefs?
- 15. 如何将宏NSString转换为NSURL
- 16. 如何将字符串转换为宏?
- 17. 将Abaqus宏转换为python脚本
- 18. Elixir宏:将原子转换为变量
- 19. 如何将此函数转换为宏?
- 20. 尝试将文件转换为excel ... [宏]
- 21. 将代码从Excel宏转换为PowerShell
- 22. 将ImageJ宏转换为插件
- 23. 将Excel 4宏转换为VBA
- 24. 将C宏转换为ActionScript 3
- 25. 在emacs中评估Elisp
- 26. Emacs Elisp覆盖默认值
- 27. 将elisp事件字符串/矢量转换为EVENT对象
- 28. 将符号转换为Elisp中的字符串
- 29. 如何将字符串列表转换为elisp中的符号
- 30. 使用elisp将Emacs帧最大化为一个显示器
感谢您的更新,Trey。看起来很有趣。 – Sahas 2010-08-06 04:50:15