前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Emacs setup for Go Development

Emacs setup for Go Development

作者头像
吕海峰
发布2018-04-03 14:55:52
3.7K0
发布2018-04-03 14:55:52
举报
文章被收录于专栏:BrianBrian

概述

最近在我个人笔记本搭建Go开发环境,需要开发基于Go的一些业务模块,所以就把Go开发环境的配置记录下来。废话少说,直接上代码,嘿嘿!

Emacs 和 GO 安装

由于我个人笔记本电脑是MAC Pro,所以在这里主要基于OSX搭建Go开发环境。个人平时编辑器基本上是Emacs,这篇博客主要是记录我在MAC下设置Emacs支持Go开发环境。

Emacs 安装

由于mac自带的emacs版本比较低,所以建议删除或者更新Emacs,个人喜欢干净利索就把旧的emacs删除掉了。新版本的mac,增加了保护系统程序的功能。如果要删除/usr/bin/或者/usr/local/bin目录西面的内容需要做如下设置。

代码语言:javascript
复制
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:

代码语言:javascript
复制
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设置如下:

代码语言:javascript
复制
#csutom go project path
export GOPATH=${HOME}/studay/go
#go install path
export GOROOT=/usr/local/go
export PATH=$PATH:${GOPATH}/bin:${GOROOT}/bin
source .zshrc

创建一个Go Project目录,以后所有的Go项目目录都放在这里即可,进入目录并安装一些非常有用的组件。比如:~/studay/go。

代码语言:javascript
复制
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,并如下配置:

代码语言:javascript
复制
(require 'go-mode)
(defun go-mode-setup())

go-eldoc

安装go-eldoc:M-x package-install go-eldoc,并且如下配置:

代码语言:javascript
复制
(defun go-mode-setup()
 (go-eldoc-setup)
)

gofmt

加载gofmt,并如下配置:

代码语言:javascript
复制
;;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设置如下:

代码语言:javascript
复制
(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可以跳转到定义,具体设置如下:

代码语言:javascript
复制
;;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)

自定制编译命令

代码语言:javascript
复制
;;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,所有的设置如下:

代码语言:javascript
复制
;;;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就设置完成,请看一下效果。

emacs go ide
emacs go ide
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • Emacs 和 GO 安装
    • Emacs 安装
      • Go 安装
      • 配置Emacs Go IDE
        • go-mode
          • go-eldoc
            • gofmt
              • goimports
                • godef
                  • 自定制编译命令
                  • 封装init-go.el
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档