 
   (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)))

;;; To do:

;; * Indentation is *almost* identical to gofmt
;; ** 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,


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

  (interactive)
  (let ((currconf (current-window-configuration)))
    (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))
		    ;; restore window config
		    ;; gofmt succeeded: replace the current buffer with outbuf,
		    ;; restore the mark and point, and discard errbuf.
		    (let ((old-mark (mark t)) (old-point (point)))
		      (set-window-configuration currconf)
		      (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."
