设为首页 收藏本站
查看: 869|回复: 0

[经验分享] Emacs golang 配置

[复制链接]

尚未签到

发表于 2018-9-20 07:50:04 | 显示全部楼层 |阅读模式
  在配置前需要下载用到的包:


  • godoc
  • godef
  • gocode
  • oracle
  在下载包之前需要设置好环境变量:
  

# Golang  
export GOROOT
=$HOME/go  
export GOPATH
=$HOME/development/go  
export PATH
=$PATH:$GOROOT/bin  
export PATH
=$PATH:$GOPATH/bin  

  如果网络良好的话使用这种方法:
  godoc:
  

go get golang.org/x/tools/cmd/godoc  

  这样会将godoc二进制文件安装到$GOROOT/bin目录里。
  godef:
  

go get github.com/rogpeppe/godef   

  这样会将godef二进制文件安装到$GOPATH/bin目录里。
  gocode 自动完成:
  

go get -u github.com/nsf/gocode  

  这样会将gocode二进制文件安装到$GOPATH/bin目录里。
  go oracle
  

go get golang.org/x/tools/cmd/oracle  

  oracle二进制文件将出现在$GOPATH/bin目录里,将它移动到$GOROOT/bin目录里。
  下面是emacs的golang配置:
  

;;; init-go --- golang  
;;; Commentary:
  
;; http:
//tleyden.github.io/blog/2014/05/22/configure-emacs-as-a-go-editor-from-scratch/  
;; https://robinxiong.gitbooks.io/golang/content/section1/emacs.html
  
;; http://studygolang.com/topics/583
  

  
;;; Code:
  

  
(require-package 'go-mode)
  
(require-package 'company-go)
  

  
(require 'go-mode)
  

  
;; removes all unused imports
  
(add-hook 'go-mode-hook '(lambda() (local-set-key (kbd "C-c C-r")'go-remove-unused-imports)))
  

  
;; format the current buffer
  
(add-hook 'go-mode-hook '(lambda () (local-set-key (kbd "C-c C-f") 'gofmt)))
  

  
;; format the buffer when save
  
(add-hook 'before-save-hook 'gofmt-before-save)
  

  
;; show the go documentation for a given package
  
;; Note: godoc depends on the godoc utility.
  
;; It must be installed and on your $PATH.
  
;; To install it run: go get code.google.com/p/go.tools/cmd/godoc.
  
(add-hook 'go-mode-hook '(lambda() (local-set-key (kbd "C-c C-k") 'godoc)))
  

  
;; Gocode autocomplete
  
;;(add-hook 'go-mode-hook 'company-mode)
  
(add-hook 'go-mode-hook '(lambda()
  
(set (make-local-variable 'company-backends)'(company-go))
  
(company-mode)))
  

  
;; Go oracle
  
;; Note: $GOPATH will defined in init-exec-path-from-shell
  
(load-file "$GOPATH/src/golang.org/x/tools/cmd/oracle/oracle.el")
  
(add-hook 'go-mode-hook 'go-oracle-mode)
  

  
(provide 'init-go)
  
;;; init-go.el ends here
  

  

;;; init-exec-path-from-shell --- exec path form shell  
;;; Commentary:
  
;; Let Emacs use .bashrc
file,especially system $PATH.  
;;; Code:
  

  
(require
-package 'exec-path-from-shell)  

  
(when (memq window-system '(mac ns x))
  
(exec-path-from-shell-initialize))
  

  
;;; for golang
  
(exec-path-from-shell-copy-env "GOPATH")
  

  
(provide 'init-exec-path-from-shell)
  
;;; init-exec-path-from-shell.el ends here
  

  另一种方法:
  注意:从github克隆的golang.org应该放在src目录里!
  

~/development/go/src  ᐅ git clone https://github.com/golang/tools golang.org/x/tools  
正克隆到 'golang.org/x/tools'...
  
remote: Counting objects: 15398, done.
  
接收对象中:   8% (1232/15398), 404.01 KiB | 69.00 KiB/s
  

  编译godoc:
  

go build golang.org/x/tools/cmd/godoc  

  注意:编译出的godoc二进制文件应该放在 ~/development/go/bin目录里!
  安装golang教程(这个是英文版的):
  

git clone https://github.com/golang/tour  

  

go build golang.org/x/tour/gotour  
golang.org
/x/tools/playground/socket/socket.go:37:2: cannot find package "golang.org/x/net/websocket" in any of:  

/home/z/go/src/golang.org/x/net/websocket (from $GOROOT)  

/home/z/development/go/src/golang.org/x/net/websocket (from $GOPATH)  

  怎么办?
  

ᐅ git clone https://github.com/golang/net  注意:gotour和net这2个目录和tools目录是平级的,它们都在$GOPATH/src/golang.org/x 目录下。
x  ├── net
  ├── tools
  └── tour
  
ᐅ go build golang.org/x/tour/gotour
  

  安装中文版的教程:
  

git clone https://github.com/Go-zh/tour github.com/Go-zh/tour  
git clone https://github.com/Go-zh/tools github.com/Go-zh/tools
  

  注意tour和tools是同级目录。
  github.com/Go-zh
  ├── tools
  └── tour
  编译中文版教程:
  

go build github.com/Go-zh/tour/gotour   

  这时会在$GOPATH/src目录中出现一个gotour二进制文件,把它剪切到$GOPATH/bin目录中并重命名为gotour-zh。
  在$GOPATH/bin中执行:./gotour-zh 即可开启浏览器。
  安装godef:
  

git clone https://github.com/rogpeppe/godef github.com/rogpeppe/godef  

  

go build github.com/rogpeppe/godef  github.com/rogpeppe/godef/acme.go:11:2: cannot find package "9fans.net/go/acme" in any of:
  /home/z/go/src/9fans.net/go/acme (from $GOROOT)
  /home/z/development/go/src/9fans.net/go/acme (from $GOPATH)
  

  解决方法:
  

git clone https://github.com/9fans/go 9fans.net/go   

  然后再编译安装godef:
  

go build github.com/rogpeppe/godef  

  参考:
  http://studygolang.com/topics/583
  http://tleyden.github.io/blog/2014/05/22/configure-emacs-as-a-go-editor-from-scratch/ https://robinxiong.gitbooks.io/golang/content/section1/emacs.html
  --End--



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-598031-1-1.html 上篇帖子: golang学习之slice基本操作 下篇帖子: golang版的crontab
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表