emacsマクロをelispに変換する方法はありますか?M-x insert-kbd-macro
とは異なり、実際の動作はelisp文になります。EmacsマクロをElispに変換する
ありがとうございました。
emacsマクロをelispに変換する方法はありますか?M-x insert-kbd-macro
とは異なり、実際の動作はelisp文になります。EmacsマクロをElispに変換する
ありがとうございました。
いいえ、申し訳ありません。 emacsマクロをelispに変換するための些細な方法はありません。
更新:このパスを開始するには、Emacsにいくつかの作業があります。開始点としてthis threadを参照してください。それはまだできません(2010年6月)が、活動があります。
私が考えることができる最初の理由は、対話的なコマンドを扱い、キーストロークを関数の適切な引数に変換することです。次のシーケンスの
思う:
CxのB .EM TABのRET
これは、バッファに切り替えるには、コマンドを開始しますタイプ3つの文字、受け入れるようにTABのそれを完了するために完了し、RETを使用しています。 (TAB補完が一意であるEmacsセッションで)最終的な結果の等価Lispがある:完了の
(switch-to-buffer ".emacs")
思考、すべてのタイプ(dabbrev
、hippie-expand
、等)の膨張との相互作用もあります。
出発点は、することができM-X編集最後-KBD-マクロ(私の場合)は、これを示しています。少なくとも、あなたの関数名の一部を与える
;; 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
です。
私は、まさにこの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))
Treyさん、ありがとうございます。興味深いですね。 – Sahas