   (let ((file (buffer-file-name (current-buffer))))
     (if file
         (progn
-;          (if (buffer-modified-p)
-;	      ;; avoid message if unmodified
-;	      (save-buffer))
+	  ;; Maybe save some buffers
+	  (save-some-buffers (not py-ask-about-save) nil)
           (py-execute-string
            (if (string-match "\\.py$" file)
                (let ((f (file-name-sans-extension

do execfile instead.  If the current buffer is not visiting a file, do
`py-execute-buffer' instead.  If the file local variable
`py-master-file' is non-nil, import or reload the named file instead
of the buffer's file.  The file is saved if necessary.

See the `\\[py-execute-region]' docs for an account of some subtleties.


  "*Jump to innermost exception frame in *Python Output* buffer.
When this variable is non-nil and ane exception occurs when running
Python code synchronously in a subprocess, jump immediately to the
source code of the innermost frame."
  :type 'boolean
  :group 'python)

(defcustom py-ask-about-save t
  "If not nil, ask about which buffers to save before executing some code.
Otherwise, all modified buffers are saved without asking."
  :type 'boolean
  :group 'python)

(defcustom py-backspace-function 'backward-delete-char-untabify
  "*Function called by `py-electric-backspace' when deleting backwards."
