 
   (save-excursion
     (back-to-indentation)
-    (let ((cs (go-mode-cs)) (case-fold-search nil))
+    (let ((cs (go-mode-cs)))
       ;; Treat comments and strings differently only if the beginning
       ;; of the line is contained within them
       (when (and cs (= (point) (car cs)))


;;;###autoload
(defun gofmt ()
 "Pipe the current buffer through the external tool `gofmt`.
Replace the current buffer on success; display errors on failure."

 (interactive)
 (let ((srcbuf (current-buffer)))
   (with-temp-buffer
     (let ((outbuf (current-buffer))
           (errbuf (get-buffer-create "*Gofmt Errors*"))
           (coding-system-for-read 'utf-8)    ;; use utf-8 with subprocesses
           (coding-system-for-write 'utf-8))
       (with-current-buffer errbuf (erase-buffer))
       (with-current-buffer srcbuf
         (save-restriction
           (let (deactivate-mark)
             (widen)
             (if (= 0 (shell-command-on-region (point-min) (point-max) "gofmt"
                                               outbuf nil errbuf))
                 ;; gofmt succeeded: replace the current buffer with outbuf,
                 ;; restore the mark and point, and discard errbuf.
                 (let ((old-mark (mark t)) (old-point (point)))
                   (erase-buffer)
                   (insert-buffer-substring outbuf)
                   (goto-char (min old-point (point-max)))
                   (if old-mark (push-mark (min old-mark (point-max)) t))
                   (kill-buffer errbuf))

               ;; gofmt failed: display the errors
               (display-buffer errbuf)))))

       ;; Collapse any window opened on outbuf if shell-command-on-region
       ;; displayed it.
       (delete-windows-on outbuf)))))

;;;###autoload
(defun gofmt-before-save ()
 "Add this to .emacs to run gofmt on the current buffer when saving:
 (add-hook 'before-save-hook #'gofmt-before-save)"

 (interactive)
 (when (eq major-mode 'go-mode) (gofmt)))


(defun godoc-read-query ()
  "Read a godoc query from the minibuffer."

;;; To do:

;; * Indentation is *almost* identical to gofmt
;; ** We think struct literal keys are labels and outdent them
;; ** We disagree on the indentation of function literals in arguments
;; ** There are bugs with the close brace of struct literals
;; * Highlight identifiers according to their syntactic context: type,
