Go で書かれている各種ツールを go get しておく場所を作っておく。このあたり定番のディレクトリ名が良くわからないので ~/local/golang にしておいた(~/local/go は Go 環境自体を入れてある)。
先日使い始めた ディレクトリ毎に異なる環境変数を設定してくれる direnv を使い、 ~/local/golang に移動したらここに GOPATH が設定されるようにしておき、そこで適宜 go get するようにする。
$ mkdir ~/local/golang $ cd ~/local/golang $ echo 'layout go' > .envrc $ direnv allow $ go get -u golang.org/x/tools/cmd/goimports $ go get -u github.com/golang/lint/golint $ go get -u github.com/dougm/goflymake
今日は goimports と golint と goflymake をインストール。
goimports は「gofmt + import の自動追加・削除」ツール。golint は Go 用の lint。 goflymake は名前の通り Go の Flymake ツール(on-the-fly 文法チェッカ)。
上の $GOPATH/bin に PATH を通しておく。
if [ -d $HOME/local/golang/bin ]; then PATH=$PATH:$HOME/local/golang/bin fi
go-mode 自体は package.el でインストール済み(package.el は helm を入れた際に設定済み)。
以下今日いれたツールを Emacs から使う設定を追加。
; バッファ保存時に gofmt (あれば goimports) を実行してソースコード整形する。 (add-hook 'before-save-hook 'gofmt-before-save) (let ((goimports (executable-find "goimports"))) (if goimports (setq gofmt-command goimports))) ; M-x golint で golint をかけられるようにする。 (let ((golint-emacs "~/local/golang/src/github.com/golang/lint/misc/emacs")) (if (file-exists-p golint-emacs) (progn (add-to-list 'load-path golint-emacs) (require 'golint)))) ; on-the-fly シンタックスチェックが動くようにする。 (let ((goflymake "~/local/golang/src/github.com/dougm/goflymake")) (if (file-exists-p goflymake) (progn (add-to-list 'load-path goflymake) (require 'go-flymake))))
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。