]> granicus.if.org Git - python/commitdiff
(py-honor-comment-indentation, py-compute-indentation): allow other
authorBarry Warsaw <barry@python.org>
Wed, 6 Mar 1996 18:41:38 +0000 (18:41 +0000)
committerBarry Warsaw <barry@python.org>
Wed, 6 Mar 1996 18:41:38 +0000 (18:41 +0000)
than nil or t values.

Misc/python-mode.el

index 19e675f8a1f1d7e2c9d3639c0e3433967520c6f7..1b0029667d34a0296e89e3d1797ee9c6460ed3d1 100644 (file)
@@ -100,15 +100,20 @@ should be of the form `#x...' where `x' is not a blank or a tab, and
 `...' is arbitrary).")
 
 (defvar py-honor-comment-indentation t
-  "*If non-nil, single-# comments are a hint to subsequent line indentation.
-If the previous line is a comment which begins with a single `#'
-character (as opposed to `py-block-comment-prefix' -- normally `##'),
-then it's indentation is used as a hint for this line's indentation.
-When this variable is nil, all comments are skipped for indentation
-purposes, and a faster algorithm is used.
+  "*Controls how comment lines influence subsequent indentation.
 
-Under Emacs 18, or old Emacs 19's, this variable has no effect, and
-the behavior is as if it were always non-nil.")
+When nil, all comment lines are skipped for indentation purposes, and
+in Emacs 19, a faster algorithm is used.
+
+When t, lines that begin with a single `#' are a hint to subsequent
+line indentation.  If the previous line is such a comment line (as
+opposed to one that starts with `py-block-comment-prefix'), then it's
+indentation is used as a hint for this line's indentation.  Lines that
+begin with `py-block-comment-prefix' are ignored for indentation
+purposes.
+
+When not nil or t, comment lines that begin with a `#' are used as
+indentation hints, unless the comment character is in column zero.")
 
 (defvar py-scroll-process-buffer t
   "*Scroll Python process buffer as output arrives.
@@ -864,10 +869,18 @@ the new line indented."
        ;; will skip a blank or non-indenting comment line that
        ;; happens to be a continuation line too.  use fast Emacs 19
        ;; function if it's there.
-       (if (and (not py-honor-comment-indentation)
+       (if (and (eq py-honor-comment-indentation nil)
                 (fboundp 'forward-comment))
            (forward-comment (- (point-max)))
-         (re-search-backward "^[ \t]*\\([^ \t\n#]\\|#[ \t\n]\\)" nil 'move))
+         (let (done)
+           (while (not done)
+             (re-search-backward "^[ \t]*\\([^ \t\n#]\\|#[ \t\n]\\)"
+                                 nil 'move)
+             (setq done (or (eq py-honor-comment-indentation t)
+                            (bobp)
+                            (/= (following-char) ?#)
+                            (not (zerop (current-column)))))
+             )))
        ;; if we landed inside a string, go to the beginning of that
        ;; string. this handles triple quoted, multi-line spanning
        ;; strings.