Go Advent Calendar 2014 8日目の投稿です。
go get
でセットアップできるemacs上のGoの開発環境を作ってみました。
これがあればちょっとGoを書きたいんだけどemacsの環境セットアップ面倒だし。。というのを解決できます。
もともとは、ペアプロや開発環境としての仮想マシン内でちょっとemacs使いたいんだけどセットアップ面倒だしvimでいいやなんてことが多々あって簡単にセットアップできたらいいなと思って作ってみました。
インストール
$ go get github.com/go-emacs/gomacs
$ gomacs main.go
これだけです。gomacsの初回起動時に関連パッケージをダウンロードします。
できること
- 補完機能 (auto-complete, gocode)
- 定義へジャンプ:
C-c C-j
(godef) 戻るときはM-*
- テスト実行:
C-c c
でテスト実行 (Compilation) - エラー箇所へジャンプ: 上の続き。テストエラー時は
C-x `
でジャンプ - スニペット入力 (yasnippet-golang)
- 保存時に自動で整形 (goimports)
- リネーム:
M-x go-rename
(gorename) - 解析:
C-c h
でヘルプ見てね。 (oracle) - lint:
M-x golint
(golint)
動いてる様子: https://asciinema.org/a/14494 ← 色が見にくいのはasciinemaの色設定のせいです
flymakeとかその他の様々なモードは少しずつ入れていこうと思います。
設定
emacsへPATHが通っていれば特に必要ないと思います。
emacsを指定して起動したい場合は ~/.config/gomacs/setting.json
に:
{
"emacs" : "/usr/local/Cellar/emacs/24.3/Emacs.app/Contents/MacOS/Emacs",
"args" : ["-q"]
}
とか書いておくといいと思います。
args
はemacsに対する引数です。-q
を指定しているのは、既存の~/.emacs
などの設定を読み込まないようにして、gomacsの設定のみで起動するようにしています。自分の設定も使えるようにする場合は外してしまっても構いません。
vagrant
ついでにvagrant上で試せるようにしておきました:
$ go get github.com/go-emacs/gomacs
$ cd $GOPATH/src/github.com/go-emacs/gomacs
$ vagrant up
$ vagrant ssh
$ gomacs main.go
仮想環境を開発環境として使う例として見ていただければと思います。
まとめ
go get
一発でemacsでgolangを書ける環境をセットアップできるようになりました。
まだ荒削りなので自分でも使いながら今後整理していこうと思います。
ちら裏
emacsの関連パッケージをgo get
しています。つまり$GOPATH
上にemacsの関連パッケージをダウンロードしています。GOPATH=$HOME
とすると便利なので、Go以外のパッケージも全部そこに入れる思想にしてしまっています。
あとGoに任せることで簡単にプロキシを突破できるメリットがあります。
emacsのバージョンは24以降が推奨ですが、23系でも動いてるみたいです。
goのバージョン指定はありません。1.4rc2でテスト済みです。