emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-24 75e114f: Fix line numbers on Python shell.


From: Fabián Ezequiel Gallina
Subject: [Emacs-diffs] emacs-24 75e114f: Fix line numbers on Python shell.
Date: Tue, 23 Dec 2014 03:45:37 +0000

branch: emacs-24
commit 75e114fa3b0b45a6356ae3fb580e8c928b45c258
Author: Fabián Ezequiel Gallina <address@hidden>
Commit: Fabián Ezequiel Gallina <address@hidden>

    Fix line numbers on Python shell.
    
    * lisp/progmodes/python.el (python-shell--save-temp-file): Do not
    append coding cookie.
    (python-shell-send-string): Generalize for
    python-shell-send-region.
    (python--use-fake-loc): Delete var.
    (python-shell-buffer-substring): Cleanup fake-loc logic.
    (python-shell-send-region): Remove fake-loc logic, simplify.
---
 lisp/ChangeLog           |   11 +++++++++++
 lisp/progmodes/python.el |   40 ++++++++++------------------------------
 2 files changed, 21 insertions(+), 30 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c00d6bc..6307657 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,14 @@
+2014-12-23  Fabián Ezequiel Gallina  <address@hidden>
+
+       Fix line numbers on Python shell.
+       * progmodes/python.el (python-shell--save-temp-file): Do not
+       append coding cookie.
+       (python-shell-send-string): Generalize for
+       python-shell-send-region.
+       (python--use-fake-loc): Delete var.
+       (python-shell-buffer-substring): Cleanup fake-loc logic.
+       (python-shell-send-region): Remove fake-loc logic, simplify.
+
 2014-12-22  Fabián Ezequiel Gallina  <address@hidden>
 
        * progmodes/python.el (python-indent-post-self-insert-function):
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 6d3916c..632659c 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -2400,9 +2400,12 @@ there for compatibility with CEDET.")
               (concat (file-remote-p default-directory) "/tmp")
             temporary-file-directory))
          (temp-file-name (make-temp-file "py"))
+         ;; XXX: Python's built-in compile function accepts utf-8 as
+         ;; input so there's no need to enforce a coding cookie.  In
+         ;; the future making `coding-system-for-write' match the
+         ;; current buffer's coding may be a good idea.
          (coding-system-for-write 'utf-8))
     (with-temp-file temp-file-name
-      (insert "# -*- coding: utf-8 -*-\n") ;Not needed for Python-3.
       (insert string)
       (delete-trailing-whitespace))
     temp-file-name))
@@ -2412,8 +2415,9 @@ there for compatibility with CEDET.")
   (interactive "sPython command: ")
   (let ((process (or process (python-shell-get-or-create-process))))
     (if (string-match ".\n+." string)   ;Multiline.
-        (let* ((temp-file-name (python-shell--save-temp-file string)))
-          (python-shell-send-file temp-file-name process temp-file-name t))
+        (let* ((temp-file-name (python-shell--save-temp-file string))
+               (file-name (or (buffer-file-name) temp-file-name)))
+          (python-shell-send-file file-name process temp-file-name t))
       (comint-send-string process string)
       (when (or (not (string-match "\n\\'" string))
                 (string-match "\n[ \t].*\n?\\'" string))
@@ -2498,12 +2502,6 @@ Returns the output.  See 
`python-shell-send-string-no-output'."
 (define-obsolete-function-alias
   'python-send-string 'python-shell-internal-send-string "24.3")
 
-(defvar python--use-fake-loc nil
-  "If non-nil, use `compilation-fake-loc' to trace errors back to the buffer.
-If nil, regions of text are prepended by the corresponding number of empty
-lines and Python is told to output error messages referring to the whole
-source file.")
-
 (defun python-shell-buffer-substring (start end &optional nomain)
   "Send buffer substring from START to END formatted for shell.
 This is a wrapper over `buffer-substring' that takes care of
@@ -2516,8 +2514,7 @@ the python shell:
   3. Wraps indented regions under an \"if True:\" block so the
      interpreter evaluates them correctly."
   (let ((substring (buffer-substring-no-properties start end))
-        (fillstr (unless python--use-fake-loc
-                   (make-string (1- (line-number-at-pos start)) ?\n)))
+        (fillstr (make-string (1- (line-number-at-pos start)) ?\n))
         (toplevel-block-p (save-excursion
                             (goto-char start)
                             (or (zerop (line-number-at-pos start))
@@ -2529,11 +2526,6 @@ the python shell:
       (if fillstr (insert fillstr))
       (insert substring)
       (goto-char (point-min))
-      (unless python--use-fake-loc
-        ;; python-shell--save-temp-file adds an extra coding line, which would
-        ;; throw off the line-counts, so let's try to compensate here.
-        (if (looking-at "[ \t]*[#\n]")
-            (delete-region (point) (line-beginning-position 2))))
       (when (not toplevel-block-p)
         (insert "if True:")
         (delete-region (point) (line-end-position)))
@@ -2557,26 +2549,14 @@ the python shell:
                  (line-number-at-pos if-name-main-start)) ?\n)))))
       (buffer-substring-no-properties (point-min) (point-max)))))
 
-(declare-function compilation-fake-loc "compile"
-                  (marker file &optional line col))
-
 (defun python-shell-send-region (start end &optional nomain)
   "Send the region delimited by START and END to inferior Python process."
   (interactive "r")
-  (let* ((python--use-fake-loc
-          (or python--use-fake-loc (not buffer-file-name)))
-         (string (python-shell-buffer-substring start end nomain))
+  (let* ((string (python-shell-buffer-substring start end nomain))
          (process (python-shell-get-or-create-process))
          (_ (string-match "\\`\n*\\(.*\\)" string)))
     (message "Sent: %s..." (match-string 1 string))
-    (let* ((temp-file-name (python-shell--save-temp-file string))
-           (file-name (or (buffer-file-name) temp-file-name)))
-      (python-shell-send-file file-name process temp-file-name t)
-      (unless python--use-fake-loc
-        (with-current-buffer (process-buffer process)
-          (compilation-fake-loc (copy-marker start) temp-file-name
-                                2)) ;; Not 1, because of the added coding line.
-        ))))
+    (python-shell-send-string string process)))
 
 (defun python-shell-send-buffer (&optional arg)
   "Send the entire buffer to inferior Python process.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]