Emacs setup for Go Development

举报
吕小卒子 发表于 2019/09/19 14:54:01 2019/09/19
【摘要】 概述最近在我个人笔记本搭建Go开发环境,需要开发基于Go的一些业务模块,所以就把Go开发环境的配置记录下来。废话少说,直接上代码,嘿嘿!Emacs 和 GO 安装由于我个人笔记本电脑是MAC Pro,所以在这里主要基于OSX搭建Go开发环境。个人平时编辑器基本上是Emacs,这篇博客主要是记录我在MAC下设置Emacs支持Go开发环境。Emacs 安装由于mac自带的emacs版本比较低,所...

概述

最近在我个人笔记本搭建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就设置完成,请看一下效果。

1620

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。