summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorFabián Ezequiel Gallina <galli.87@gmail.com>2014-11-15 19:02:52 -0300
committerFabián Ezequiel Gallina <galli.87@gmail.com>2014-11-15 19:02:52 -0300
commit92f58578cc939e0d955437fcbc87cda80c2ba05c (patch)
treecfa7284f877f5bf05e98f6f607a38ce36ccd044e /lisp
parentb6cd03a825f7b8bdd0a741f68f20f81fb541ee5b (diff)
downloademacs-92f58578cc939e0d955437fcbc87cda80c2ba05c.tar.gz
emacs-92f58578cc939e0d955437fcbc87cda80c2ba05c.tar.bz2
emacs-92f58578cc939e0d955437fcbc87cda80c2ba05c.zip
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.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/progmodes/python.el6
2 files changed, 10 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index fe06ac671b7..d13a62a9b2d 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,10 @@
2014-11-15 Fabián Ezequiel Gallina <fgallina@gnu.org>
+ * progmodes/python.el (python-indent-calculate-levels): Fix
+ indentation behavior multiline dedenter statement. (Bug#18432)
+
+2014-11-15 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
* progmodes/python.el (python-indent-region): Use
python-indent-line and skip special cases. (Bug#18843)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 5f8d7a29fa6..89b2f1fd081 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -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)))