Fixes: debbugs:18432

* lisp/progmodes/python.el (python-indent-calculate-levels): Fix
indentation behavior multiline dedenter statement.

* test/automated/python-tests.el (python-indent-dedenters-8): New test
for Bug#18432.
This commit is contained in:
Fabián Ezequiel Gallina 2014-11-15 19:02:52 -03:00
parent b6cd03a825
commit 92f58578cc
4 changed files with 30 additions and 1 deletions

View file

@ -955,7 +955,11 @@ START is the buffer position where the sexp starts."
(defun python-indent-calculate-levels ()
"Calculate `python-indent-levels' and reset `python-indent-current-level'."
(if (not (python-info-dedenter-statement-p))
(if (or (python-info-continuation-line-p)
(not (python-info-dedenter-statement-p)))
;; XXX: This asks for a refactor. Even if point is on a
;; dedenter statement, it could be multiline and in that case
;; the continuation lines should be indented with normal rules.
(let* ((indentation (python-indent-calculate-indentation))
(remainder (% indentation python-indent-offset))
(steps (/ (- indentation remainder) python-indent-offset)))