(py-shell): Added optional argprompt, which will prompt for additional
switches to pass into the shell process (only on initial startup).
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index d8983a7..e139b51 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -1154,13 +1154,21 @@
     (setq py-output-buffer (format "*%s Output*" py-which-bufname))))
 
 ;;;###autoload
-(defun py-shell ()
+(defun py-shell (&optional argprompt)
   "Start an interactive Python interpreter in another window.
 This is like Shell mode, except that Python is running in the window
 instead of a shell.  See the `Interactive Shell' and `Shell Mode'
 sections of the Emacs manual for details, especially for the key
 bindings active in the `*Python*' buffer.
 
+With optional \\[universal-argument], the user is prompted for the
+flags to pass to the Python interpreter.  This has no effect when this
+command is used to switch to an existing process, only when a new
+process is started.  If you use this, you will probably want to ensure
+that the current arguments are retained (they will be included in the
+prompt).  This argument is ignored when this function is called
+programmatically, or when running in Emacs 19.34 or older.
+
 Note: You can toggle between using the CPython interpreter and the
 JPython interpreter by hitting \\[py-toggle-shells].  This toggles
 buffer local variables which control whether all your subshell
@@ -1183,9 +1191,7 @@
 interaction between undo and process filters; the same problem exists in
 non-Python process buffers using the default (Emacs-supplied) process
 filter."
-  ;; BAW - should undo be disabled in the python process buffer, if
-  ;; this bug still exists?
-  (interactive)
+  (interactive "P")
   (if (null py-which-shell)
       (cond ((eq py-default-interpreter 'cpython)
 	     (setq py-which-shell py-python-command
@@ -1195,14 +1201,26 @@
 		   py-which-args py-jpython-command-args))
 	    (t (error "Illegal value for `py-default-interpreter': %s"
 		      py-default-interpreter))))
-  (switch-to-buffer-other-window
-   (apply 'make-comint py-which-bufname py-which-shell nil py-which-args))
-  (make-local-variable 'comint-prompt-regexp)
-  (setq comint-prompt-regexp "^>>> \\|^[.][.][.] \\|^(pdb) ")
-  (add-hook 'comint-output-filter-functions 'py-comint-output-filter-function)
-  (set-syntax-table py-mode-syntax-table)
-  (use-local-map py-shell-map)
-  )
+  (let ((args py-which-args))
+    (when (and argprompt
+	       (interactive-p)
+	       (fboundp 'split-string))
+      ;; TBD: Perhaps force "-i" in the final list?
+      (setq args (split-string
+		  (read-string (concat py-which-bufname
+				       " arguments: ")
+			       (concat
+				(mapconcat 'identity py-which-args " ") " ")
+			       ))))
+    (switch-to-buffer-other-window
+     (apply 'make-comint py-which-bufname py-which-shell nil args))
+    (make-local-variable 'comint-prompt-regexp)
+    (setq comint-prompt-regexp "^>>> \\|^[.][.][.] \\|^(pdb) ")
+    (add-hook 'comint-output-filter-functions
+	      'py-comint-output-filter-function)
+    (set-syntax-table py-mode-syntax-table)
+    (use-local-map py-shell-map)
+    ))
 
 (defun py-clear-queue ()
   "Clear the queue of temporary files waiting to execute."