]> git.eshelyaron.com Git - emacs.git/commitdiff
Fixes: debbugs:18432
authorFabián Ezequiel Gallina <galli.87@gmail.com>
Sat, 15 Nov 2014 22:02:52 +0000 (19:02 -0300)
committerFabián Ezequiel Gallina <galli.87@gmail.com>
Sat, 15 Nov 2014 22:02:52 +0000 (19:02 -0300)
* 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.

lisp/ChangeLog
lisp/progmodes/python.el
test/ChangeLog
test/automated/python-tests.el

index fe06ac671b79abfad6db0feb75aec799c599ffae..d13a62a9b2d13577df5d5e7a281d4959ef382b1a 100644 (file)
@@ -1,3 +1,8 @@
+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
index 5f8d7a29fa64f0ac615ac69e810cb6211caa25e0..89b2f1fd08180bb11876ef806c461ee28ff41d71 100644 (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)))
index 971a4f8f40061b026719621205141fb13adda165..4f7f068e7960f90ccdc16150e5d4bf785bb04fae 100644 (file)
@@ -1,3 +1,8 @@
+2014-11-15  Fabián Ezequiel Gallina  <fgallina@gnu.org>
+
+       * automated/python-tests.el (python-indent-dedenters-8): New test
+       for Bug#18432.
+
 2014-11-15  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 
        * automated/python-tests.el (python-indent-region-1)
index 8c657c38b644de87a679ab7ecd855164204d1873..f368f995caec7d0a962b0805ae01c222ce071b6d 100644 (file)
@@ -711,6 +711,21 @@ if a:
     (should (= (python-indent-calculate-indentation) 0))
     (should (equal (python-indent-calculate-levels) '(0)))))
 
+(ert-deftest python-indent-dedenters-8 ()
+  "Test indentation for Bug#18432."
+  (python-tests-with-temp-buffer
+   "
+if (a == 1 or
+    a == 2):
+    pass
+elif (a == 3 or
+a == 4):
+"
+   (python-tests-look-at "a == 4):\n")
+   (should (eq (car (python-indent-context)) 'inside-paren))
+   (should (= (python-indent-calculate-indentation) 6))
+   (should (equal (python-indent-calculate-levels) '(0 4 6)))))
+
 (ert-deftest python-indent-electric-colon-1 ()
   "Test indentation case from Bug#18228."
   (python-tests-with-temp-buffer