returnを拡張した上で、その機能を呼び出す方法
趣味で現在、エンターキーを叩くと音が鳴るように、自分のEmacsを拡張しています。そのときに、以下のようなEmacs Lispを書いています:
(defun java-button ()
(interactive)
(progn
(start-process
"java-button-process"
nil
"aplay"
(concat (getenv "HOME") "/Archive/" "java.wav"))
;; (newline) ???
))
(global-set-key [return] 'java-button)
このとき、global-set-key
の段階で、java-button
という関数に上書きされてしまうため、元々あるreturn
(エンターキー)の「バッファでのメニュー決定」などの機能が無くなってしまいます。
newline
を使えばいいのかなとも思ったのですが、Readonly-buffer
のエラーとなってしまい、そのバッファのテキスト内容を編集しようとしてしまいます。
この場合、java-button
という関数(?)から何を呼び出すのが適切なのでしょうか。それとも本来はこのように書くべきではなく、他の上書きしないような回避方法があるのでしょうか?