LoginSignup
33
30

More than 5 years have passed since last update.

emacs でgolang編集環境を作る

Last updated at Posted at 2016-04-22

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

参考にした記事とか

以上になります。

33
30
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
30