12FF5B8

hico_horiuchiの技術系な覚え書き.

UbuntuとEmacsでGo言語の環境構築

こんばんは,大晦日ですが僕は大学です.
最近よく聞くGo言語を使ってみたく,Xubuntu 13.04,Emacs 24.3での開発環境を構築してみました.

Mercurialのインストール

Go言語はMercurialでバージョン管理されてるので,インストールします.
PPAを追加して,最新版をインストールします.

$ sudo add-apt-repository ppa:mercurial-ppa/releases
$ sudo aptitude update
$ sudo aptitude install mercurial

Go言語のインストール

環境変数の設定

以下の内容を.bashrcや.zshrcに追加する.

export GOROOT=$HOME/go
export GOOS=linux
export GOARCH=amd64 # 32bitの場合は386
export GOBIN=$HOME/bin
export GOPATH=$HOME/.go
export PATH=$GOBIN:$PATH

実行環境のインストール

コンパイルに必要なパッケージを導入し,リポジトリをクローン,ビルドする.

$ sudo aptitude install gcc libc6-dev
$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
$ cd $GOROOT/src
$ ./all.bash

Go言語の実行環境がインストールされたことを確認する.

$ go version
go version go1.2 linux/amd64

Emacsの設定

パッケージの追加

定義ジャンプで必要なgodefと,補完で必要なgocodeをインストールする.

$ go get code.google.com/p/rog-go/exp/cmd/godef
$ go get -u github.com/nsf/gocode

EmacsLispの準備

load-pathを通したディレクトリに必要なEmacsLispファイルをコピーする.

$ mkdir /load/path/go-mode
$ cd /load/path/go-mode
$ cp $GOROOT/misc/emacs/* .
$ cp $GOPATH/src/github.com/nsf/gocode/emacs/* .

設定の追加

以下の内容を.emacs.d/init.elなどに追加する.

(require 'go-mode-load)
(require 'go-autocomplete)
(add-hook 'go-mode-hook
          '(lambda()
            (setq tab-width 2)
            (setq indent-tabs-mode t)
            (local-set-key (kbd "M-.") 'godef-jump)
            (local-set-key (kbd "C-c C-r") 'go-remove-unused-imports)
            (local-set-key (kbd "C-c i") 'go-goto-imports)
            (local-set-key (kbd "C-c d") 'godoc)
(add-hook 'before-save-hook 'gofmt-before-save)

追記: zshでの補完

$GOROOT/misc/zsh/goに補完関数があったので使ってみる.

go_zsh=$GOROOT'/misc/zsh/go'
if [ -f $go_zsh ] ; then
  source $go_zsh
fi

まとめ

パッケージで提供されているGo言語が古く,ソースから入れるのに手間取ってしまった.
開発環境整えたので,コード書いていきたい,xmlとかsshのライブラリもあるし.

では,よいお年を.