diff Misc/python-mode.el @ 9503:fec862301d6e legacy-trunk

(py-execute-region): Hack around the different behavior and switch semantics between CPython/JPython when the script source is piped to stdin.
author Barry Warsaw <barry@python.org>
date Fri, 20 Nov 1998 03:04:07 +0000
parents a3bcf1b36551
children da1dd3e54b7a
line wrap: on
line diff
--- a/Misc/python-mode.el	Wed Nov 18 23:28:24 1998 +0000
+++ b/Misc/python-mode.el	Fri Nov 20 03:04:07 1998 +0000
@@ -1215,8 +1215,11 @@
     (cond
      ;; always run the code in its own asynchronous subprocess
      (async
-      (let* ((buf (generate-new-buffer-name py-output-buffer)))
-	(start-process py-which-bufname buf py-which-shell "-u" file)
+      (let* ((buf (generate-new-buffer-name py-output-buffer))
+	     ;; TBD: a horrible hack, but why create new Custom variables?
+	     (arg (if (string-equal py-which-bufname "Python")
+		      "-u" "")))
+	(start-process py-which-bufname buf py-which-shell arg file)
 	(pop-to-buffer buf)
 	(py-postprocess-output-buffer buf)
 	))
@@ -1230,18 +1233,22 @@
       (setq py-file-queue (append py-file-queue (list file)))
       (setq py-exception-buffer (cons file (current-buffer))))
      (t
-      ;; otherwise either run it synchronously in a subprocess
-      (shell-command-on-region start end py-which-shell py-output-buffer)
-      ;; shell-command-on-region kills the output buffer if it never
-      ;; existed and there's no output from the command
-      (if (not (get-buffer py-output-buffer))
-	  (message "No output.")
-	(setq py-exception-buffer (current-buffer))
-	(let ((err-p (py-postprocess-output-buffer py-output-buffer)))
-	  (pop-to-buffer py-output-buffer)
-	  (if err-p
-	      (pop-to-buffer py-exception-buffer)))
-	))
+      ;; TBD: a horrible hack, buy why create new Custom variables?
+      (let ((cmd (concat py-which-shell
+			 (if (string-equal py-which-bufname "JPython")
+			     " -" ""))))
+	;; otherwise either run it synchronously in a subprocess
+	(shell-command-on-region start end cmd py-output-buffer)
+	;; shell-command-on-region kills the output buffer if it never
+	;; existed and there's no output from the command
+	(if (not (get-buffer py-output-buffer))
+	    (message "No output.")
+	  (setq py-exception-buffer (current-buffer))
+	  (let ((err-p (py-postprocess-output-buffer py-output-buffer)))
+	    (pop-to-buffer py-output-buffer)
+	    (if err-p
+		(pop-to-buffer py-exception-buffer)))
+	  )))
      )))