]> git.eshelyaron.com Git - emacs.git/commitdiff
python-indent-guess-indent-offset improvements
authorFabián Ezequiel Gallina <fgallina@cuca>
Thu, 17 May 2012 03:02:54 +0000 (00:02 -0300)
committerFabián Ezequiel Gallina <fgallina@gnu.org>
Thu, 17 May 2012 03:02:54 +0000 (00:02 -0300)
lisp/progmodes/python.el

index 26b13afe2ede11aa0f960a0cd75b34e0f79fdc55..e4019373362fdb2a902fa3003a817511d622f197 100644 (file)
@@ -402,24 +402,31 @@ These make `python-indent-calculate-indentation' subtract the value of
 
 (defun python-indent-guess-indent-offset ()
   "Guess and set `python-indent-offset' for the current buffer."
-  (save-excursion
-    (let ((found-block))
-      (while (and (not found-block)
-                  (re-search-forward
-                    (python-rx line-start block-start) nil t))
-        (when (not (syntax-ppss-context (syntax-ppss)))
-          (setq found-block t)))
-      (if (not found-block)
-          (message "Can't guess python-indent-offset, using defaults: %s"
-                   python-indent-offset)
-        (while (and (progn
-                      (goto-char (line-end-position))
-                      (python-info-continuation-line-p))
-                    (not (eobp)))
-          (forward-line 1))
-        (forward-line 1)
-        (forward-comment 1)
-        (setq python-indent-offset (current-indentation))))))
+    (save-excursion
+      (save-restriction
+        (widen)
+        (goto-char (point-min))
+        (let ((found-block))
+          (while (and (not found-block)
+                      (re-search-forward
+                       (python-rx line-start block-start) nil t))
+            (when (and (not (syntax-ppss-context (syntax-ppss)))
+                       (progn
+                         (goto-char (line-end-position))
+                         (forward-comment -1)
+                         (eq ?: (char-before))))
+              (setq found-block t)))
+          (if (not found-block)
+              (message "Can't guess python-indent-offset, using defaults: %s"
+                       python-indent-offset)
+            (while (and (progn
+                          (goto-char (line-end-position))
+                          (python-info-continuation-line-p))
+                        (not (eobp)))
+              (forward-line 1))
+            (forward-line 1)
+            (forward-comment 1)
+            (setq python-indent-offset (current-indentation)))))))
 
 (defun python-indent-context (&optional stop)
   "Return information on indentation context.