Enhancements to indentation.
authorFabián Ezequiel Gallina <fgallina@gnu.org>
Sun, 7 Oct 2012 16:13:52 +0000 (13:13 -0300)
committerFabián Ezequiel Gallina <fgallina@gnu.org>
Sun, 7 Oct 2012 16:13:52 +0000 (13:13 -0300)
* lisp/progmodes/python.el (python-indent-context): Give priority to
inside-string context.  Make comments indentation markers.
(python-indent-region): Do not mess with strings, unless it's the
enclosing set of quotes.

lisp/ChangeLog
lisp/progmodes/python.el

index fe225a9..64b5d08 100644 (file)
@@ -1,3 +1,11 @@
+2012-10-07  Fabián Ezequiel Gallina  <fgallina@cuca>
+
+       Enhancements to indentation.
+       * progmodes/python.el (python-indent-context): Give priority to
+       inside-string context.  Make comments indentation markers.
+       (python-indent-region): Do not mess with strings, unless it's the
+       enclosing set of quotes.
+
 2012-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * window.el (internal--before-save-selected-window)
index 726c0b2..3ac8719 100644 (file)
@@ -676,12 +676,12 @@ START is the buffer position where the sexp starts."
            (goto-char (line-beginning-position))
            (bobp))
          'no-indent)
-        ;; Inside a paren
-        ((setq start (python-syntax-context 'paren ppss))
-         'inside-paren)
         ;; Inside string
         ((setq start (python-syntax-context 'string ppss))
          'inside-string)
+        ;; Inside a paren
+        ((setq start (python-syntax-context 'paren ppss))
+         'inside-paren)
         ;; After backslash
         ((setq start (when (not (or (python-syntax-context 'string ppss)
                                     (python-syntax-context 'comment ppss)))
@@ -710,7 +710,7 @@ START is the buffer position where the sexp starts."
         ;; After normal line
         ((setq start (save-excursion
                        (back-to-indentation)
-                       (python-util-forward-comment -1)
+                       (skip-chars-backward (rx (or whitespace ?\n)))
                        (python-nav-beginning-of-statement)
                        (point-marker)))
          'after-line)
@@ -973,7 +973,16 @@ Called from a program, START and END specify the region to indent."
               (back-to-indentation)
               (setq word (current-word))
               (forward-line 1)
-              (when word
+              (when (and word
+                         ;; Don't mess with strings, unless it's the
+                         ;; enclosing set of quotes.
+                         (or (not (python-syntax-context 'string))
+                             (eq
+                              (syntax-after
+                               (+ (1- (point))
+                                  (current-indentation)
+                                  (python-syntax-count-quotes (char-after) (point))))
+                              (string-to-syntax "|"))))
                 (beginning-of-line)
                 (delete-horizontal-space)
                 (indent-to (python-indent-calculate-indentation)))))