Emacs 23 および 24 では、次のようにすると問題なく動作します。
(defun foo (&optional arg)
(interactive "^p")
(message "arg is %i" arg))
Emacs 22 では、次のエラーが発生します。
Invalid control letter `^' (136) in interactive calling string
私はこれを試しました:
(defun foo (&optional arg)
(interactive (concat (if (> emacs-major-version 22) "^" "") "p"))
(message "arg is %i" arg))
しかし、私は得る:
Wrong type argument: listp, "^p"
Emacs 23 または 24 で使用するのに最適な方法は何^
ですか? Emacs 22 では使用できません。