emacs でgolang編集環境を作る

  • 14
    いいね
  • 0
    コメント

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

参考にした記事とか

以上になります。