              (t
               (if sw:paren-lookback    ; Look for open parenthesis ?
                   (if follows-comma
-		      (sw:get-paren-indent)
+		      (sw:get-paren-indent indent t)
 		    (max 
 		     indent		; (if (looking-at "[])}]") (1- indent) indent)
-		     (sw:get-paren-indent)))
+		     (sw:get-paren-indent indent nil)))
                 indent))))))))))
 
 (defun sw:previous-line-ends-in-comma ()

		   (goto-char origpoint)
		   (looking-at "[])}]")))
	    (1+ (current-column))
	  (if (save-excursion
		(forward-char 1)
		(and t ;(looking-at sw:indent-starters-reg)
		     (not (looking-at "\n"))
		     (progn (goto-char origpoint)
			    (not (sw:previous-line-ends-in-comma)))))
	      (1+ (+ (current-column) sw:indent-level))
	    (1+ (current-column))))))))

(defun sw:inside-comment-or-string-p ()
  (let ((start (point)))

    (end-of-line n)
    (point)))

(defun sw:get-paren-indent (indent after-comma)
  (save-excursion
    (let ((levelpar 0)                  ; Level of "()"
          (levelcurl 0)                 ; Level of "{}"
