diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/progmodes/python.el | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index fbe5b8b0743..abae8aff47b 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -2986,29 +2986,32 @@ the python shell: coding cookie is added. 4. Wraps indented regions under an \"if True:\" block so the interpreter evaluates them correctly." - (let* ((substring (buffer-substring-no-properties start end)) + (let* ((start (save-excursion + ;; Normalize start to the line beginning position. + (goto-char start) + (line-beginning-position))) + (substring (buffer-substring-no-properties start end)) (starts-at-point-min-p (save-restriction (widen) (= (point-min) start))) (encoding (python-info-encoding)) + (toplevel-p (zerop (save-excursion + (goto-char start) + (python-util-forward-comment 1) + (current-indentation)))) (fillstr (when (not starts-at-point-min-p) (concat (format "# -*- coding: %s -*-\n" encoding) (make-string ;; Subtract 2 because of the coding cookie. - (- (line-number-at-pos start) 2) ?\n)))) - (toplevel-block-p (save-excursion - (goto-char start) - (or (zerop (line-number-at-pos start)) - (progn - (python-util-forward-comment 1) - (zerop (current-indentation))))))) + (- (line-number-at-pos start) 2) ?\n))))) (with-temp-buffer (python-mode) - (if fillstr (insert fillstr)) + (when fillstr + (insert fillstr)) (insert substring) (goto-char (point-min)) - (when (not toplevel-block-p) + (when (not toplevel-p) (insert "if True:") (delete-region (point) (line-end-position))) (when nomain |