           (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

  (let ((m (make-sparse-keymap)))
    (define-key m "}" #'go-mode-insert-and-indent)
    (define-key m ")" #'go-mode-insert-and-indent)
    (define-key m ":" #'go-mode-delayed-electric)
    ;; In case we get : indentation wrong, correct ourselves
    (define-key m "=" #'go-mode-insert-and-indent)

	(remove-text-properties
	 b (min go-mode-mark-cs-end (point-max)) '(go-mode-cs nil))
	(setq go-mode-mark-cs-end b)))

    (when (<= b go-mode-mark-string-end)
      ;; Remove the property adjacent to the change position.
      ;; It may contain positions pointing beyond the new end mark.
      (let ((b (let ((cs (get-text-property (max 1 (1- b)) 'go-mode-string)))
		 (if cs (car cs) b))))
	(remove-text-properties
	 b (min go-mode-mark-string-end (point-max)) '(go-mode-string nil))
	(setq go-mode-mark-string-end b)))
    (when (<= b go-mode-mark-comment-end)
      ;; Remove the property adjacent to the change position.
      ;; It may contain positions pointing beyond the new end mark.
      (let ((b (let ((cs (get-text-property (max 1 (1- b)) 'go-mode-comment)))
		 (if cs (car cs) b))))
	(remove-text-properties
	 b (min go-mode-mark-string-end (point-max)) '(go-mode-comment nil))
	(setq go-mode-mark-comment-end b)))
    
    (when (< b go-mode-mark-nesting-end)
      (remove-text-properties b (min go-mode-mark-nesting-end (point-max)) '(go-mode-nesting nil))
      (setq go-mode-mark-nesting-end b))))
