Emacs
golang

emacs でgolang編集環境を作る

More than 3 years have passed since last update.

突然ですが私、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とかと比べると非常に少なく、今からプログラミングを始めようという方にも、これまで別の言語を触ってきた方にも良いんじゃないかな(?)と思っています。


参考にした記事とか

以上になります。