(defadvice self-insert-command (before overwrite-space-after-oparen activate)
"括弧の中で条件を満たしたときに空白を上書きする"
(cond
((let ((ca (char-after)) ; カーソル直後の文字、無ければ nil
(cb (char-before))) ; カーソル直前の文字、無ければ nil
(and (eq major-mode 'oreore-mode) ; 安全のためモードを条件に入れる。
ca cb ; カーソル前後に文字があり、かつ、
(= ca ?\s) ; カーソル上(直後)の文字が空白、
(memq cb '(?\[ ?\( ?\{ ?\<)))) ; カーソル前は開括弧であること。
;; 空白を消しておくことで上書きの効果が得られる。
(delete-char 1)
(message "space is overwritten with %s" (this-command-keys)))))