It's kinda late. So I make it quick: How to setup an emacs with syntax check when you write golang script.
In linux of course.
(require 'go-mode-load)<br />(require 'flymake)<br />(autoload 'flymake-find-file-hook "flymake" "" t)<br />(add-hook 'find-file-hook 'flymake-find-file-hook)<br />(setq flymake-gui-warnings-enabled nil)<br />(setq flymake-log-level 0)<br />(defun flymake-golang-init ()<br /> (defadvice flymake-save-buffer-in-file ;;;;fix for my goscript usage<br /> (around flymake-save-buffer-in-file-golang-fix<br /> (file-name)<br /> activate)<br /> (make-directory (file-name-directory file-name) 1)<br /> (save-excursion<br /> (goto-char 0)<br /> (when (looking-at "^#!/.*goscript.*")<br /> (progn (forward-line 1) (forward-char -1)))<br /> (write-region (point) (point-max) file-name nil 566))<br /> (flymake-log 3 "saved buffer %s in file %s" (buffer-name) file-name))<br /> (let* ((temp-file (flymake-init-create-temp-buffer-copy<br /> 'flymake-create-temp-inplace))<br /> (local-file (file-relative-name<br /> temp-file<br /> (file-name-directory buffer-file-name))))<br /> ;; edit this if you use `8g'/`6g' other than my `cg'<br /> ;; #!/bin/bash<br /> ;; 6g $*<br /> ;; exit 0<br /> (list "cg" (list "-o /dev/null" local-file))))<br />(setq flymake-allowed-file-name-masks<br /> (cons '(".+//.go$"<br /> flymake-golang-init<br /> flymake-simple-cleanup<br /> flymake-get-real-file-name)<br /> flymake-allowed-file-name-masks))<br />(defun flymake-display-current-error ()<br /> "Display errors/warnings under cursor."<br /> (interactive)<br /> (let ((ovs (overlays-in (point) (1+ (point)))))<br /> (catch 'found<br /> (dolist (ov ovs)<br /> (when (flymake-overlay-p ov)<br /> (message (overlay-get ov 'help-echo))<br /> (throw 'found t))))))<br />(global-set-key (kbd "C-c f") 'flymake-display-current-error)<br />(global-set-key (kbd "C-c m") 'flymake-mode)<br />