2年ほどGo言語での開発に関わってきて、色々開発環境を変えては来たのですが、最近落ち着いてきたのでこのタイミングで書きまとめました。

OS

Macです。

Versions

  • Golang 1.6
  • Emacs version is 24.5.1 (デフォルトで入ってたバージョンかな)

事前準備

gofmt(コード整形)

デフォルトインストール済み

godef(関数定義など参照出来るようにする)

$ go get github.com/rogpeppe/godef

gocode(autocompleteやcompanyと連携して補完を可能にする)

$ go get -u github.com/nsf/gocode

golint / errcheck (flycheck で自動的にシンタックスエラーを検知)

$ go get github.com/golang/lint/golint
$ go get github.com/kisielk/errcheck

Emacsの設定(init.el)

パッケージの管理は el-get を使ってます。

# inits/go.el or init.el
(add-to-list 'exec-path (expand-file-name "/usr/local/bin"))
(add-to-list 'exec-path (expand-file-name "~/go/bin"))
;; 必要なパッケージのロード
(el-get-bundle! 'go-mode)
(el-get-bundle! company in company-mode/company-mode)

;;; company-go
(el-get-bundle! company-go :url "https://raw.githubusercontent.com/nsf/gocode/master/emacs-company/company-go.el")

;; 諸々の有効化、設定
(add-hook 'go-mode-hook 'company-mode)
(add-hook 'go-mode-hook 'flycheck-mode)
(add-hook 'go-mode-hook (lambda()
           (add-hook 'before-save-hook' 'gofmt-before-save)
           (local-set-key (kbd "M-.") 'godef-jump)
           (set (make-local-variable 'company-backends) '(company-go))
           (company-mode)
))

参考記事では、タブをスペース4に変更してましたが、一応go fmt のお作法に則ってこちらでは削除しております。
スペースに変更したい場合は、参考URLを見てみてください

参考

http://qiita.com/bussorenre/items/3e80e59d517db8aebf46

結果

参考にもありますが、

  • 保存時に整形、lintが実行されるようになります。
  • syntax error などが視覚的にわかるようになります。
  • コード補完が聴くようになります。
  • M-. で、関数定義に飛べるようになります。