[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master a3c79d4: Fix electric indent bug in python-mode aft
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] master a3c79d4: Fix electric indent bug in python-mode after dedenting colon |
Date: |
Sat, 5 Jan 2019 04:05:38 -0500 (EST) |
branch: master
commit a3c79d44ccb4f6503d0a8b02230ff7a41db64ff8
Author: Joel Rosdahl <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Fix electric indent bug in python-mode after dedenting colon
* list/progmodes/python.el (python-indent-post-self-insert-function):
Use markers instead of positions when reindenting statement(s) after
inserting electric colon to avoid reindenting too many
statements (bug#22663).
* test/lisp/progmodes/python-tests.el (python-indent-electric-colon-2):
Improve test case to also verify the fix of bug#22663.
Copyright-paperwork-exempt: yes
---
lisp/progmodes/python.el | 19 ++++++++++---------
test/lisp/progmodes/python-tests.el | 3 +++
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index ea34e1d..71b2a94 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1334,16 +1334,17 @@ the line will be re-indented automatically if needed."
(not (equal ?: (char-before (1- (point)))))
(not (python-syntax-comment-or-string-p)))
;; Just re-indent dedenters
- (let ((dedenter-pos (python-info-dedenter-statement-p))
- (current-pos (point)))
+ (let ((dedenter-pos (python-info-dedenter-statement-p)))
(when dedenter-pos
- (save-excursion
- (goto-char dedenter-pos)
- (python-indent-line)
- (unless (= (line-number-at-pos dedenter-pos)
- (line-number-at-pos current-pos))
- ;; Reindent region if this is a multiline statement
- (python-indent-region dedenter-pos current-pos)))))))))
+ (let ((start (copy-marker dedenter-pos))
+ (end (point-marker)))
+ (save-excursion
+ (goto-char start)
+ (python-indent-line)
+ (unless (= (line-number-at-pos start)
+ (line-number-at-pos end))
+ ;; Reindent region if this is a multiline statement
+ (python-indent-region start end))))))))))
;;; Mark
diff --git a/test/lisp/progmodes/python-tests.el
b/test/lisp/progmodes/python-tests.el
index 34a0519..94c846e 100644
--- a/test/lisp/progmodes/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
@@ -1161,10 +1161,13 @@ def b()
if do:
something()
else
+outside
"
(python-tests-look-at "else")
(goto-char (line-end-position))
(python-tests-self-insert ":")
+ (should (= (current-indentation) 0))
+ (python-tests-look-at "outside")
(should (= (current-indentation) 0))))
(ert-deftest python-indent-electric-colon-3 ()
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master a3c79d4: Fix electric indent bug in python-mode after dedenting colon,
Eli Zaretskii <=