[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master b9c6c0fb7b: Fix Python indentation of block continuation
From: |
Lars Ingebrigtsen |
Subject: |
master b9c6c0fb7b: Fix Python indentation of block continuation |
Date: |
Thu, 18 Aug 2022 09:16:52 -0400 (EDT) |
branch: master
commit b9c6c0fb7bf396aa7ef0c53778211544d0c3499f
Author: kobarity <kobarity@gmail.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Fix Python indentation of block continuation
* lisp/progmodes/python.el (python-indent--calculate-indentation):
Fix indentation of :after-backslash-block-continuation.
* test/lisp/progmodes/python-tests.el
(python-indent-after-backslash-6): New test (bug#57262).
---
lisp/progmodes/python.el | 8 +++++++-
test/lisp/progmodes/python-tests.el | 19 +++++++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index e135039199..9a2d17abb4 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1238,8 +1238,14 @@ possibilities can be narrowed to specific indentation
points."
;; Add one indentation level.
(goto-char start)
(+ (current-indentation) python-indent-offset))
+ (`(:after-backslash-block-continuation . ,start)
+ (goto-char start)
+ (let ((column (current-column)))
+ (if (= column (+ (current-indentation) python-indent-offset))
+ ;; Add one level to avoid same indent as next logical line.
+ (+ column python-indent-offset)
+ column)))
(`(,(or :inside-paren
- :after-backslash-block-continuation
:after-backslash-dotted-continuation) . ,start)
;; Use the column given by the context.
(goto-char start)
diff --git a/test/lisp/progmodes/python-tests.el
b/test/lisp/progmodes/python-tests.el
index 875c92573e..0904dfc963 100644
--- a/test/lisp/progmodes/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
@@ -1250,6 +1250,25 @@ def delete_all_things():
:after-backslash-dotted-continuation))
(should (= (python-indent-calculate-indentation) 16))))
+(ert-deftest python-indent-after-backslash-6 ()
+ "Backslash continuation from for block."
+ (python-tests-with-temp-buffer
+ "
+for long_variable_name \\
+ in (1, 2):
+ print(long_variable_name)
+"
+ (python-tests-look-at "for long_variable_name \\")
+ (should (eq (car (python-indent-context)) :no-indent))
+ (should (= (python-indent-calculate-indentation) 0))
+ (python-tests-look-at "in (1, 2):")
+ (should (eq (car (python-indent-context))
+ :after-backslash-block-continuation))
+ (should (= (python-indent-calculate-indentation) 8))
+ (python-tests-look-at "print(long_variable_name)")
+ (should (eq (car (python-indent-context)) :after-block-start))
+ (should (= (python-indent-calculate-indentation) 4))))
+
(ert-deftest python-indent-block-enders-1 ()
"Test de-indentation for pass keyword."
(python-tests-with-temp-buffer
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master b9c6c0fb7b: Fix Python indentation of block continuation,
Lars Ingebrigtsen <=