中国語のピンインをEmacs上で打ちたくLispを書こうとしてるのですが、キーバインディングの変更程度しか書いたことがなく躓いています。

(defun make-tone-2 ()
  (interactive)
  (insert "foo"))

(define-minor-mode pinyin-mode
  "Input pinyin"
  :lighter " PinYin"
  :keymap (let ((map (make-sparse-keymap)))
            (define-key map (kbd "2") 'make-tone-2)
            map))

とりあえずこのように minor-mode の定義を行い、make-tone-2で現在のカーソルの左方向にあるスペース以外の英文字を取得して auoi があれば、それぞれáúóí に置換しようと考えています。(ただしカーソルに一番近い文字のみ)

どの関数を使えばよいかも全くわからない状態で、どのように実装すれば良いかヒントを頂けないでしょうか。