Improvements from Tim after some complaints...
diff --git a/Misc/python-mode-old.el b/Misc/python-mode-old.el
index bbd0e5b..6e4bad3 100644
--- a/Misc/python-mode-old.el
+++ b/Misc/python-mode-old.el
@@ -1,4 +1,4 @@
-;;; Major mode for editing Python programs, version 1.08ax
+;;; Major mode for editing Python programs, version 1.08ay
 ;; by: Tim Peters <tim@ksr.com>
 ;; after an original idea by: Michael A. Guravage
 ;;
@@ -509,25 +509,74 @@
     (cond
      ;; are we on a continuation line?
      ( (py-continuation-line-p)
-       (let ( (open-bracket-pos (py-nesting-level)) )
+       (let ( (startpos (point))
+	      (open-bracket-pos (py-nesting-level))
+	      endpos searching found)
 	 (if open-bracket-pos
-	     ;; line up with first real character (not whitespace or
-	     ;; comment hash) after open bracket; if none, to one
-	     ;; column beyond the open bracket
 	     (progn
-	       (goto-char (1+ open-bracket-pos)) ; just beyond bracket
-	       (and (looking-at "[ \t]*[^ \t\n#]")
-		    (goto-char (1- (match-end 0))))
-	       (current-column))
+	       ;; if preceding line in same structure, presumably the
+	       ;; user already has an indentation they like for this
+	       ;; structure, so just copy it
+	       (forward-line -1)
+	       (while (looking-at "[ \t]*[#\n]")
+		 (forward-line -1))	; ignore noise lines
+	       (if (eq open-bracket-pos (py-nesting-level))
+		   (current-indentation)
+		 ;; else copy the indentation of the first item (if
+		 ;; any) in this structure
+		 (goto-char startpos)
+		 (condition-case nil
+		     (progn (backward-list) (setq found t))
+		   (error nil))		; no preceding item
+		 (goto-char (1+ open-bracket-pos)) ; just beyond bracket
+		 (if found
+		     (progn
+		       (while (looking-at "[ \t]*[#\n\\\\]")
+			 (forward-line 1))
+		       (skip-chars-forward " \t")
+		       (current-column))
+		   ;; else to first real character (not whitespace or
+		   ;; comment hash) after open bracket; if none, to
+		   ;; 1 beyond the open bracket
+		   (and (looking-at "[ \t]*[^ \t\n#]")
+			(goto-char (1- (match-end 0))))
+		   (current-column))))
+
 	   ;; else on backslash continuation line
 	   (forward-line -1)
 	   (if (py-continuation-line-p)	; on at least 3rd line in block
 	       (current-indentation)	; so just continue the pattern
-	     ;; else started on 2nd line in block, so indent more;
-	     ;; skip first chunk of non-whitespace characters on base
-	     ;; line, + 1 more column
+	     ;; else started on 2nd line in block, so indent more.
+	     ;; if base line is an assignment with a start on a RHS,
+	     ;; indent to 2 beyond the leftmost "="; else skip first
+	     ;; chunk of non-whitespace characters on base line, + 1 more
+	     ;; column
+	     (end-of-line)
+	     (setq endpos (point)  searching t)
 	     (back-to-indentation)
-	     (skip-chars-forward "^ \t\n")
+	     (setq startpos (point))
+	     ;; look at all "=" from left to right, stopping at first
+	     ;; one not nested in a list or string
+	     (while searching
+	       (skip-chars-forward "^=" endpos)
+	       (if (= (point) endpos)
+		   (setq searching nil)
+		 (forward-char 1)
+		 (setq state (parse-partial-sexp startpos (point)))
+		 (if (and (zerop (car state)) ; not in a bracket
+			  (null (nth 3 state)))	; & not in a string
+		     (progn
+		       (setq searching nil) ; done searching in any case
+		       (setq found
+			     (not (or
+				   (eq (char-after (point)) ?=)
+				   (memq (char-after (- (point) 2))
+					 '(?< ?> ?!)))))))))
+	     (if (or (not found)	; not an assignment
+		     (looking-at "[ \t]*\\\\"))	; <=><spaces><backslash>
+		 (progn
+		   (goto-char startpos)
+		   (skip-chars-forward "^ \t\n")))
 	     (1+ (current-column))))))
 
      ;; not on a continuation line
@@ -1263,18 +1312,29 @@
 comment) character.  If the suggested indentation is too much, use
 \\[py-delete-char] to reduce it.
 
-Continuation lines are given extra indentation.  If a line is a
-continuation line by virtue of being in an unclosed paren/bracket/
-brace structure, it's indented to line up with the first non-whitespace
-and non-comment character following the opening paren/bracket/brace
-of the smallest such enclosing structure.  If no such character exists,
-it's indented to one column beyond the opening paren/bracket/brace.
+Continuation lines are given extra indentation.  If you don't like the
+suggested indentation, change it to something you do like, and Python-
+mode will strive to indent later lines of the statement in the same way.
+
+If a line is a continuation line by virtue of being in an unclosed
+paren/bracket/brace structure (`list', for short), the suggested
+indentation depends on whether the current line will contain the first
+item in the list.  If it is the first item, it's indented to line up with
+the first non-whitespace and non-comment character following the list's
+opening bracket; if no such character exists, it's indented to one column
+beyond the opening bracket.  If you don't like that, change it by hand.
+The remaining items in the list will mimic whatever indentation you gave
+to the first item.
 
 If a line is a continuation line because the line preceding it ends with
-a backslash, the third and following lines of the continuation block
-inherit their indentation from the line preceding them, while the second
-line in the block is indented to one column beyond the first chunk of
-non-whitespace characters in the block's initial line.
+a backslash, the third and following lines of the statement inherit their
+indentation from the line preceding them.  The indentation of the second
+line in the statement depends on the form of the first (base) line:  if
+the base line is an assignment statement with anything more interesting
+than the backslash following the leftmost assigning `=', the second line
+is indented two columns beyond that `='.  Else it's indented to two
+columns beyond the leftmost solid chunk of non-whitespace characters on
+the base line.
 
 Warning:  indent-region should not normally be used!  It calls \\[indent-for-tab-command]
 repeatedly, and as explained above, \\[indent-for-tab-command] can't guess the block