Clojureの開発でCIDERが使いたくてSpacemacsに入門したのだが、それより前にGolangを書く必要が出てきたのでコードを書く環境を整える。
golang
インストール
brewでインストール。
brew install golang
GOPATH/binをパスに通す
$XDG_CONFIG_HOME/fish/conf.d/go.fish
を作成。
set -x GOPATH $HOME/go
for p in $GOPATH
set PATH $p/bin $PATH
end
Go Layer利用の準備
Go Layerが利用するコマンド群をインストール。
入力補完
go get -u -v github.com/nsf/gocode
シンボル定義の参照
https://github.com/rogpeppe/godef
go get -u -v github.com/rogpeppe/godef
コードのナビゲーション
https://godoc.org/golang.org/x/tools/cmd/guru
go get -u -v golang.org/x/tools/cmd/guru
リネーム
https://godoc.org/golang.org/x/tools/cmd/gorename
go get -u -v golang.org/x/tools/cmd/gorename
importの削除と追加
https://godoc.org/golang.org/x/tools/cmd/goimports
go get -u -v golang.org/x/tools/cmd/goimports
Linter
https://github.com/alecthomas/gometalinter
go get -u -v github.com/alecthomas/gometalinter
gometalinter --install --update
Go Layerを有効化
$HOME/.spacemacs.d/init.el
の dotspacemacs/layers
関数内 dotspacemacs-configuration-layers
リストに以下を追加。
auto-completion
syntax-checking
(go :variables
go-use-gometalinter t
gofmt-command "goimports"
go-tab-width 4)
auto-completion
と syntax-checking
が有効になっていない場合は併せて有効化する。
SPC f e R で設定変更を反映。
ghqルートにGOPATHを追加
ghqでローカルリポジトリを管理する場合は、 go get
したプロジェクトのソースもghq管理下となるようにする。
ghq.root
に $GOPATH/src
を追加。
[ghq]
root = ~/Sources
root = ~/go/src
シンタックスチェック
Syntax Checking Layerを有効化する。
$HOME/.spacemacs.d/init.el
の dotspacemacs/layers
関数内 dotspacemacs-configuration-layers
リストに以下を追加。
syntax-checking
Syntax Checking Layerではシンタックスチェックに Flycheck を利用している。
また Go Layerを有効化した際に go-use-gometalinter
を真とした場合はflycheck-gometalinterにより gometalinter
が利用される。
自動チェックのタイミング
デフォルトのFlycheckチェックのタイミングは
- バッファの保存時
- バッファに行が追加された時
- 操作せずに所定の時間経過した時
- Flycheck modeが有効下された時
のいずれかとなる。
今回シンタックスチェックは自動で掛けるのをやめ、手動でのみ実行する。
$HOME/.spacemacs.d/init.el
のdotspacemacs/user-config
に以下設定を追加
(setq flycheck-check-syntax-automatically nil)
自動で掛けたい場合は、flycheck-check-syntax-automatically
にトリガをリストで指定する。
トリガ | 説明 |
---|---|
save |
バッファ保存時 |
new-line |
バッファに行が追加された時 |
idle-change |
操作せずに所定の時間経過した時 |
mode-enabled |
Flycheck modeが有効下された時 |
;; 例)モード有効時と保存時にシンタックスチェックを実施する。
(setq flycheck-check-syntax-automatically '(mode-enabled save))
キーバインド
- シンタックスチェックの有効 / 無効化
- SPC t s
- エラー一覧の表示 / 非表示
-
SPC e l
- エラーをクリア
- SPC e c
- 各種Flycheckのヘルプ
- SPC e h
- シンタックスチェックの実施
- C-c ! c