diff options
author | kobarity <kobarity@gmail.com> | 2022-08-18 15:16:08 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2022-08-18 15:16:08 +0200 |
commit | b9c6c0fb7bf396aa7ef0c53778211544d0c3499f (patch) | |
tree | 57c93dbd5d00bdb85245223797ddeaee86dadab1 | |
parent | 74e830768dc412b7041e01882efb1a697278d462 (diff) | |
download | emacs-b9c6c0fb7bf396aa7ef0c53778211544d0c3499f.tar.gz |
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).
-rw-r--r-- | lisp/progmodes/python.el | 8 | ||||
-rw-r--r-- | test/lisp/progmodes/python-tests.el | 19 |
2 files changed, 26 insertions, 1 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index e1350391994..9a2d17abb4a 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 875c92573ef..0904dfc9639 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 |