scratchバッファで不用意に評価されないようにする

scratchバッファの存在意義であるC-j(カーソルの直前にあるS式を評価して出力)ですが、関数定義中などでは一時的に通常の動作(改行+インデント)に戻ってほしいことがあります。次のコードを評価すると、まさにその挙動を手に入れることができます。

(defadvice eval-print-last-sexp (around eval-print-last-sexp-or-newline-and-indent activate)
  (condition-case nil
      (progn
        (scan-lists (point) -1 (point-min))
        (newline-and-indent))
    (scan-error ad-do-it)))

これによりトップレベルのS式のみが評価対象になります。scratchバッファでの作業が大分快適になると思います。