overwrite-space-after-oparen


(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)))))
parent