From e2ac11eba7776e890e2668d7c74e9c0b0b860b8e Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 28 Aug 2006 21:58:27 +0000 Subject: [PATCH] (python-send-command): Simplify. (run-python): Don't generate a new buffer unless `new' was specified. Make sure we send `import emacs' to the proper process. --- lisp/ChangeLog | 4 ++++ lisp/progmodes/python.el | 48 ++++++++++++++++++++-------------------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c0797ec968a..ec5296ba0ca 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2006-08-28 Stefan Monnier + * progmodes/python.el (python-send-command): Simplify. + (run-python): Don't generate a new buffer unless `new' was specified. + Make sure we send `import emacs' to the proper process. + * progmodes/python.el (python-send-command): Don't wait for the command to terminate. Don't fiddle with compilation-parsing-end. diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 4821376ec7b..ca22e36cb40 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -1330,30 +1330,30 @@ buffer for a list of commands.)" ;; (not a name) in Python buffers from which `run-python' &c is ;; invoked. Would support multiple processes better. (when (or new (not (comint-check-proc python-buffer))) - (save-current-buffer - (let* ((cmdlist (append (python-args-to-list cmd) '("-i"))) - (path (getenv "PYTHONPATH")) - (process-environment ; to import emacs.py - (cons (concat "PYTHONPATH=" data-directory - (if path (concat ":" path))) - process-environment))) - (set-buffer (apply 'make-comint-in-buffer "Python" - (generate-new-buffer "*Python*") - (car cmdlist) nil (cdr cmdlist))) - (setq-default python-buffer (current-buffer)) - (setq python-buffer (current-buffer))) + (with-current-buffer + (let* ((cmdlist (append (python-args-to-list cmd) '("-i"))) + (path (getenv "PYTHONPATH")) + (process-environment ; to import emacs.py + (cons (concat "PYTHONPATH=" data-directory + (if path (concat ":" path))) + process-environment))) + (apply 'make-comint-in-buffer "Python" + (if new (generate-new-buffer "*Python*") "*Python*") + (car cmdlist) nil (cdr cmdlist))) + (setq-default python-buffer (current-buffer)) + (setq python-buffer (current-buffer)) (accept-process-output (get-buffer-process python-buffer) 5) - (inferior-python-mode))) + (inferior-python-mode) + ;; Load function definitions we need. + ;; Before the preoutput function was used, this was done via -c in + ;; cmdlist, but that loses the banner and doesn't run the startup + ;; file. The code might be inline here, but there's enough that it + ;; seems worth putting in a separate file, and it's probably cleaner + ;; to put it in a module. + ;; Ensure we're at a prompt before doing anything else. + (python-send-receive "import emacs; print '_emacs_out ()'"))) (if (derived-mode-p 'python-mode) (setq python-buffer (default-value 'python-buffer))) ; buffer-local - ;; Load function definitions we need. - ;; Before the preoutput function was used, this was done via -c in - ;; cmdlist, but that loses the banner and doesn't run the startup - ;; file. The code might be inline here, but there's enough that it - ;; seems worth putting in a separate file, and it's probably cleaner - ;; to put it in a module. - ;; Ensure we're at a prompt before doing anything else. - (python-send-receive "import emacs; print '_emacs_out ()'") ;; Without this, help output goes into the inferior python buffer if ;; the process isn't already running. (sit-for 1 t) ;Should we use accept-process-output instead? --Stef @@ -1369,8 +1369,8 @@ buffer for a list of commands.)" (defun python-send-command (command) "Like `python-send-string' but resets `compilation-shell-minor-mode'. COMMAND should be a single statement." - (assert (not (string-match "\n" command))) - (let ((end (marker-position (process-mark (python-proc))))) + ;; (assert (not (string-match "\n" command))) + ;; (let ((end (marker-position (process-mark (python-proc))))) (with-current-buffer python-buffer (goto-char (point-max))) (compilation-forget-errors) (python-send-string command) @@ -1382,7 +1382,7 @@ COMMAND should be a single statement." ;; (python-send-receive "print '_emacs_out ()'") ;; (with-current-buffer python-buffer ;; (set-marker compilation-parsing-end end)) - )) + ) ;;) (defun python-send-region (start end) "Send the region to the inferior Python process." -- 2.39.2