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