2009-04-15 14 views
14

読みやすいキーボードマクロを得るという名前のキーボードマクロを保存するためにinsert-kbd-macroを使用している場合、私はのEmacs:

(fset 'ppsql 
    (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([134217788 134217765 44 return 44 17 10 return 33 134217765 102 102 backspace 114 111 109 return 17 10 102 111 109 backspace backspace 114 111 return 33] 0 "%d")) arg))) 

のような「読めない」Lispコードを取得し、私はむしろ、次のようなものを持っていると思います:

(fset 'move-line-down 
     [?\C-a ?\C-k delete down ?\C-y return up]) 

IIRC私は同じ方法で両方のキーボードマクロを記録し、名前をつけて挿入しました:F3F4name-last-kbd-macro

最初のマクロを読み込み可能な形式で取得できますか?

答えて

13

Emacsのキーボードマクロ機能には、macroskmacrosという2つのモードがあります。前者は好きなようにマクロを返します - シンボル形式 - 後者はラムダ形式を提供します。したがって、name-last-kbd-macroに電話すると、シンボルフォームが表示されます。kmacro-name-last-macroに電話すると、ラムダフォームが表示されます。

-3

私は最初のフォームを見たことがありません。第二の形式は私が慣れてきたものです。最初のマクロを再記録して、記録してから名前を付けてから挿入するとどうなるか見てみましたか?

また、F3/F4ではなく、kmacro-start-macroと "C-X" kmacro-end-macroを呼び出すC-X( "C-X")があります。たぶん、より単純なキーボードマクロコマンドがより簡単に機能するでしょう。

1

ありがとうございました!を挿入するとき

だからマクロの命名は、フォーマットを決定しますか?

私はもう少し実験を行い、M-x insert-kbd-macro RET RETが私に「記号形式」を与えることに気付きました。

は、「labmda-form」(name-last-kbd-macroで名前を付けた後)となります。

今私は、以前の実験ですべての道でname-last-kbd-macroを使用していたことを認識しています...?

+2

'kmacro-name-last-macro'(' Ch f kmacro-name-last-macro')の関数定義をチェックすると、最後の行に 'kmacro-lambda-form'が呼び出されますマクロ上で - ラムダフォームを取得する理由です。 (次回は質問をよく編集してから新しい回答を投稿してください) –