           (when (looking-at "\\<case\\>\\|\\<default\\>\\|\\w+\\s *:\\(\\S.\\|$\\)")
             (decf indent tab-width))
 
+	  (when (looking-at "\\w+\\s *:.+,\\s *$")
+	    (incf indent tab-width))
+
           ;; Continuation lines are indented 1 level
-          (beginning-of-line)
-          (go-mode-backward-skip-comments)
+          (beginning-of-line)		; back up to end of previous line
+	  (backward-char)
+          (go-mode-backward-skip-comments) ; back up past any comments
           (when (case (char-before)
                   ((nil ?\{ ?:)
                    ;; At the beginning of a block or the statement

		(cond
		 ((looking-at "//")
		  (end-of-line)
		  (point))
		 ((looking-at "/\\*")
		  (goto-char (+ pos 2))
		  (if (search-forward "*/" (1+ end) t)

       (when (/= (skip-chars-backward "[:word:]_") 0)
         (not (looking-at go-mode-non-terminating-keywords-regexp)))))))

(defun go-mode-whitespace-p (char)
  "Is char whitespace in the syntax table for go."
  (eq 32 (char-syntax char)))

(defun go-mode-backward-skip-comments ()
  "Skip backward over comments and whitespace."
  ;; only proceed if point is in a comment or white space
  (if (or (go-mode-in-comment)
	  (go-mode-whitespace-p (char-after (point))))
      (let ((loop-guard t))
	(while (and
		loop-guard
		(not (bobp)))

	  (cond ((go-mode-whitespace-p (char-after (point)))
		 ;; moves point back over any whitespace
		 (re-search-backward "[^[:space:]]"))

		((go-mode-in-comment)
		 ;; move point to char preceeding current comment
		 (goto-char (1- (car (go-mode-in-comment)))))
		
		;; not in a comment or whitespace? we must be done.
		(t (setq loop-guard nil)
		   (forward-char 1)))))))

(defun go-mode-indentation ()
  "Compute the ideal indentation level of the current line.
