Emacs setup for Go Development
概述
最近在我个人笔记本搭建Go开发环境,需要开发基于Go的一些业务模块,所以就把Go开发环境的配置记录下来。废话少说,直接上代码,嘿嘿!
Emacs 和 GO 安装
由于我个人笔记本电脑是MAC Pro,所以在这里主要基于OSX搭建Go开发环境。个人平时编辑器基本上是Emacs,这篇博客主要是记录我在MAC下设置Emacs支持Go开发环境。
Emacs 安装
由于mac自带的emacs版本比较低,所以建议删除或者更新Emacs,个人喜欢干净利索就把旧的emacs删除掉了。新版本的mac,增加了保护系统程序的功能。如果要删除/usr/bin/或者/usr/local/bin目录西面的内容需要做如下设置。
1.开机按 cmd+r,选择utilities》terminal 2.执行 csrutil disable 3.reboot 4.启动后 执行 rm -rf /usr/share/emacs rm -rf /usr/local/bin/emacs 5.按1的方法,再执行 csrutil enable
然后在安装新版本的Emacs:
brew cask uninstall --force emacs brew cask install emacs --with-cocoa --srgb --with-x --with-gnutls 然后安装完成之后再.profile(或者.zshrc)设置emacs alias alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs-x86_64-10_5' alias eme='emacs -nw' alias ems='emacs --daemon&' alias emc='emacsclient -c ' alias emt='emacsclient -t ' alias ec="emacsclient -e '(kill-emacs)'"
Go 安装
现在需要安装GoLang,Go安装可以通过以下两种方式:
brew install go
官网下载Go dmg
安装完成之后,在.profile设置如下:
#csutom go project pathexport GOPATH=${HOME}/studay/go #go install pathexport GOROOT=/usr/local/goexport PATH=$PATH:${GOPATH}/bin:${GOROOT}/bin source .zshrc
创建一个Go Project目录,以后所有的Go项目目录都放在这里即可,进入目录并安装一些非常有用的组件。比如:~/studay/go。
cd ~/studay/go go get -u golang.org/x/tools/cmd/goimports go get -u golang.org/x/tools/cmd/vet go get -u golang.org/x/tools/cmd/oracle go get -u golang.org/x/tools/cmd/godoc go get -u github.com/golang/lint/golint go get -u github.com/nsf/gocode
到此Go就安装完毕。
配置Emacs Go IDE
为了配置Emacs作为Go的Ide,需要设置一些hook和安装包。
go-mode
安装go-mode,M-x package-install go-mode,并如下配置:
(require 'go-mode) (defun go-mode-setup())
go-eldoc
安装go-eldoc:M-x package-install go-eldoc,并且如下配置:
(defun go-mode-setup() (go-eldoc-setup))
gofmt
加载gofmt,并如下配置:
;;Format before saving(defun go-mode-setup () (go-eldoc-setup) (add-hook 'before-save-hook 'gofmt-before-save)) (add-hook 'go-mode-hook 'go-mode-setup)
goimports
goimports设置如下:
(defun go-mode-setup () (go-eldoc-setup) (setq gofmt-command "goimports") (add-hook 'before-save-hook 'gofmt-before-save)) (add-hook 'go-mode-hook 'go-mode-setup)
godef
godef可以跳转到定义,具体设置如下:
;;Godef, shows function definition when calling godef-jump (defun go-mode-setup () (go-eldoc-setup) (setq gofmt-command "goimports") (add-hook 'before-save-hook 'gofmt-before-save) (local-set-key (kbd "M-.") 'godef-jump)) (add-hook 'go-mode-hook 'go-mode-setup)
自定制编译命令
;;Custom Compile Command (defun go-mode-setup () (setq compile-command "go build -v && go test -v && go vet && golint") (define-key (current-local-map) "\C-c\C-c" 'compile) (go-eldoc-setup) (setq gofmt-command "goimports") (add-hook 'before-save-hook 'gofmt-before-save) (local-set-key (kbd "M-.") 'godef-jump)) (add-hook 'go-mode-hook 'go-mode-setup)
封装init-go.el
都放在init.el里面显示文件太大也不易于管理,所以我在这里就创建了一个init-go.el,所有的设置如下:
;;;custom go ide (require 'go-autocomplete) (require 'go-eldoc) (require 'go-mode) (require 'auto-complete-config) (require 'golint) (ac-config-default) (defun go-mode-setup () (go-eldoc-setup) (setq gofmt-command "goimports") (setq compile-command "go build -v && go test -v && go vet") (define-key (current-local-map) "\C-c\C-c" 'compile) (add-hook 'before-save-hook 'gofmt-before-save) (local-set-key (kbd "M-.") 'godef-jump)) (add-hook 'go-mode-hook 'go-mode-setup) (provide 'init-go) ;;;
在init.el里面,只需要装载即可:(require ‘init-go)。这样一个完整的go ide就设置完成,请看一下效果。
- 点赞
- 收藏
- 关注作者
评论(0)