nDiki : 2015年05月08日

2015年5月8日 (金)

EmacsGo 環境整備

Go ベースのツール置き場を作る

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 文法チェッカ)。

.bashrc

上の $GOPATH/bin に PATH を通しておく。

 if [ -d $HOME/local/golang/bin ]; then
     PATH=$PATH:$HOME/local/golang/bin
 fi

Emacs の設定

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))))
スポンサード リンク

今日のさえずり: gofmt-before-save (with goimports) と golint と goflymake 設定したら良くなった

2015年05月08日

  • 15:01 Windows は巻き寿司。 / “寿司の絵文字を比較して心を落ち着かせる | プログラミング生放送” http://bit.ly/1KoJkr7
  • 18:28 Emacs + Go 用に gofmt-before-save (with goimports) と golint と goflymake 設定したら良くなった。
[ 5月8日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.044646s / load averages: 0.60, 0.54, 0.58
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker