いくつかのVimエミュレーション機能に取り組んでいるときに、次のコードを思いつきました。
;続いてを押すReturnと、カーソルが行の終わりにジャンプし、セミコロンを挿入します。
(global-set-key (kbd ";") 'insert-or-append)
(defun insert-or-append ()
"If the user enters <return>, then jump to end of line and append a semicolon,
otherwise insert user input at the position of the cursor"
(interactive)
(let ((char-read (read-char-exclusive))
(trigger ";"))
(if (eql ?\r char-read)
(progn
(end-of-line)
(insert trigger))
(insert (this-command-keys)))))
この関数は正常に機能しますが、すべてがハードコーディングされています。もっと一般的にしたいと思います。(kbd "<return>")
理想的には、引数としてkbd-macro(たとえば)を指定し、それを。の結果と比較したいと思います(read-char)
。ただし、kbdはシンボルを(read-char)
返し、文字コードを返します。Emacsのドキュメントを調べてきましたが、変換を見つけることができませんでした。
2つを比較する方法はありますか?または、より簡単なアプローチはありますか?