突然ですが私、go言語を始めました!
いきなりこの人何言ってんだ。
やろうと思って簡単に習得できるものじゃないぞ。
ということで、go言語用にemacsをカスタマイズします。
前提条件
- package.elが導入済みであること。
- goがインストール済みであること。
必要なgo パッケージの導入
- gofmt(コードを整形してくれるパッケージ。デフォルトで導入済み)
- godef(関数定義などを参照できるパッケージ)
- gocode(autocompleteやcompanyと連携して補完をしてくれるパッケージ)
- golint / errcheck (flycheck で自動的にシンタックスエラーを検知)
go get github.com/rogpeppe/godef
go get -u github.com/nsf/gocode
go get github.com/golang/lint/golint
go get github.com/kisielk/errcheck
導入した結果
- 保存時に、コードを自動的に綺麗にしてくれるようになる。
- syntax error が検出された時、色を変えて教えてくれる。
- M-. で、関数定義に飛べる。
- その他、自動補完
emacs の設定
M-x package-install flycheck
M-x package-install company-go
golang-conf.el
;; Goのパスを通す
(add-to-list 'exec-path (expand-file-name "/usr/local/go/bin/"))
;; go get で入れたツールのパスを通す
(add-to-list 'exec-path (expand-file-name "/Users/ryo/.go/bin"))
;; 必要なパッケージのロード
(require 'go-mode)
(require 'company-go)
;; 諸々の有効化、設定
(add-hook 'go-mode-hook 'company-mode)
(add-hook 'go-mode-hook 'flycheck-mode)
(add-hook 'go-mode-hook (lambda()
(add-hook 'before-save-hook' 'gofmt-before-save)
(local-set-key (kbd "M-.") 'godef-jump)
(set (make-local-variable 'company-backends) '(company-go))
(company-mode)
(setq indent-tabs-mode nil) ; タブを利用
(setq c-basic-offset 4) ; tabサイズを4にする
(setq tab-width 4)))
感想とかもっとこうしたほうがいいとか
- 私の環境ではauto-complete ではなくcompanyを使用していますので、acユーザーの方は参考記事などを参考にしていただけると良いかと思います。
- 随時記事を更新していこうと思いますが、現状これでかなり満足しています(go勉強中の身なので)
全体的な感想としては、かなり楽に導入できるなと思った次第です。go言語そのものがそうなのですが、導入コストがruby やpython や、低レイヤーでいうとcとかjavaとかと比べると非常に少なく、今からプログラミングを始めようという方にも、これまで別の言語を触ってきた方にも良いんじゃないかな(?)と思っています。
参考にした記事とか
以上になります。