]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
(py-outdent-p): new function
authorBarry Warsaw <barry@python.org>
Tue, 14 Mar 1995 22:05:53 +0000 (22:05 +0000)
committerBarry Warsaw <barry@python.org>
Tue, 14 Mar 1995 22:05:53 +0000 (22:05 +0000)
(py-electric-colon, py-indent-line): watch out for intervening blank
or comment lines.

Misc/python-mode.el

index 0d5df7b40e2fb77c1bb773f40bc1ec20676d5dca..619f3f8352fcec865b7607149183a4a65e42f719 100644 (file)
@@ -403,6 +403,19 @@ py-beep-if-tab-change\tring the bell if tab-width is changed"
 
 \f
 ;; electric characters
+(defun py-outdent-p ()
+  ;; returns non-nil if the current line should outdent one level
+  (save-excursion
+    (and (progn (back-to-indentation)
+               (looking-at py-outdent-re))
+        (progn (backward-to-indentation 1)
+               (while (or (looking-at py-blank-or-comment-re)
+                          (bobp))
+                 (backward-to-indentation 1))
+               (not (looking-at py-no-outdent-re)))
+        )))
+      
+
 (defun py-electric-colon (arg)
   "Insert a colon.
 In certain cases the line is outdented appropriately.  If a numeric
@@ -414,13 +427,7 @@ argument is provided, that many colons are inserted non-electrically."
          (outdent 0)
          (indent (py-compute-indentation)))
       (if (and (not arg)
-              (progn
-                (back-to-indentation)
-                (looking-at py-outdent-re))
-              (prog2
-                  (backward-to-indentation 1)
-                  (not (looking-at py-no-outdent-re))
-                (goto-char here))
+              (py-outdent-p)
               (= indent (progn
                           (forward-line -1)
                           (py-compute-indentation)))
@@ -650,11 +657,7 @@ needed so that only a single column position is deleted."
         (move-to-indentation-p (<= (current-column) ci))
         (need (py-compute-indentation)))
     ;; see if we need to outdent
-    (if (save-excursion
-         (and (progn (back-to-indentation)
-                     (looking-at py-outdent-re))
-              (progn (backward-to-indentation 1)
-                     (not (looking-at py-no-outdent-re)))))
+    (if (py-outdent-p)
        (setq need (- need py-indent-offset)))
     (if (/= ci need)
        (save-excursion