そこで、Emacs キーボード マクロを elisp コードとして保存する方法を探していました'insert-kbd-macro
。マクロのキーにマップされている実際の関数に使用される Emacs キー記述言語を置き換えます。
そうすることで、最初にキーにマップされた関数を取得し、次にこれらの関数を文字列としてレンダリングして現在のバッファーに書き込むことを検討していました
(symbol-name
(key-binding "\C-xo"))
文字列を返します"other-window"
ただし、現在insert-kbd-macro
マクロをキャレット表記で保存します (人間が読める形式ではありません) (例: ^P
vs \C-p
) 関数key-binding
は、人間が判読できる表記のみを受け入れるようです。
したがって、人間が読める表記に変換するために、関数を見ましたkey-description
(key-description "\346")
戻り値"M-f"
ただし、 で受け入れられるようにするにはkey-binding
、「\Mf」の形式で表記する必要があります)。
これを行うための明白な方法は
(concat "\\" (key-description "\346")
ただし、emacs は返さ"\\"
ないだけです"\"
何が起こっているのかを理解するために、文字の生のバイトがどのように"\"
表示されるかを確認することにしました....
(byte-to-string 92)
戻ります'\\'
elisp のバグではないかと思います。