在配置前需要下载用到的包:
<ol><li>godoc</li><li>godef</li><li>gocode</li><li>oracle</li></ol>
在下载包之前需要设置好环境变量:
<pre><span style="color:#000000;"># Golang
export GOROOT</span>=$HOME/<span style="color:#000000;">go
export GOPATH</span>=$HOME/development/<span style="color:#000000;">go
export PATH</span>=$PATH:$GOROOT/<span style="color:#000000;">bin
export PATH</span>=$PATH:$GOPATH/bin</pre>
如果网络良好的话使用这种方法:
godoc:
<pre>go get golang.org/x/tools/cmd/godoc</pre>
这样会将godoc二进制文件安装到$GOROOT/bin目录里。
godef:
<pre>go get github.com/rogpeppe/godef </pre>
这样会将godef二进制文件安装到$GOPATH/bin目录里。
gocode 自动完成:
<pre>go get -u github.com/nsf/gocode</pre>
这样会将gocode二进制文件安装到$GOPATH/bin目录里。
go oracle
<pre>go get golang.org/x/tools/cmd/oracle</pre>
oracle二进制文件将出现在$GOPATH/bin目录里,将它移动到$GOROOT/bin目录里。
下面是emacs的golang配置:
<pre>;;; init-go ---<span style="color:#000000;"> golang
;;; Commentary:
;; http:</span><span style="color:#008000;">//</span><span style="color:#008000;">tleyden.github.io/blog/2014/05/22/configure-emacs-as-a-go-editor-from-scratch/</span>
;; https:<span style="color:#008000;">//</span><span style="color:#008000;">robinxiong.gitbooks.io/golang/content/section1/emacs.html</span>
;; http:<span style="color:#008000;">//</span><span style="color:#008000;">studygolang.com/topics/583</span>
<span style="color:#000000;">
;;; Code:
(require</span>-package <span style="color:#800000;">'</span><span style="color:#800000;">go-mode)</span>
(require-package <span style="color:#800000;">'</span><span style="color:#800000;">company-go)</span>
<span style="color:#000000;">
(require </span><span style="color:#800000;">'</span><span style="color:#800000;">go-mode)</span>
<span style="color:#000000;">
;; removes all unused imports
(add</span>-hook <span style="color:#800000;">'</span><span style="color:#800000;">go-mode-hook </span><span style="color:#800000;">'</span>(lambda() (local-set-key (kbd <span style="color:#800000;">"</span><span style="color:#800000;">C-c C-r</span><span style="color:#800000;">"</span>)<span style="color:#800000;">'</span><span style="color:#800000;">go-remove-unused-imports)))</span>
<span style="color:#000000;">
;; format the current buffer
(add</span>-hook <span style="color:#800000;">'</span><span style="color:#800000;">go-mode-hook </span><span style="color:#800000;">'</span>(lambda () (local-set-key (kbd <span style="color:#800000;">"</span><span style="color:#800000;">C-c C-f</span><span style="color:#800000;">"</span>) <span style="color:#800000;">'</span><span style="color:#800000;">gofmt)))</span>
<span style="color:#000000;">
;; format the buffer when save
(add</span>-hook <span style="color:#800000;">'</span><span style="color:#800000;">before-save-hook </span><span style="color:#800000;">'</span>gofmt-before-<span style="color:#000000;">save)
;; show the go documentation </span><span style="color:#0000ff;">for</span><span style="color:#000000;"> a given package
;; Note: godoc depends on the godoc utility.
;; It must be installed and on your $PATH.
;; To </span><span style="color:#0000ff;">install</span> it run: go get code.google.com/p/go.tools/cmd/<span style="color:#000000;">godoc.
(add</span>-hook <span style="color:#800000;">'</span><span style="color:#800000;">go-mode-hook </span><span style="color:#800000;">'</span>(lambda() (local-set-key (kbd <span style="color:#800000;">"</span><span style="color:#800000;">C-c C-k</span><span style="color:#800000;">"</span>) <span style="color:#800000;">'</span><span style="color:#800000;">godoc)))</span>
<span style="color:#000000;">
;; Gocode autocomplete
;;(add</span>-hook <span style="color:#800000;">'</span><span style="color:#800000;">go-mode-hook </span><span style="color:#800000;">'</span>company-<span style="color:#000000;">mode)
(add</span>-hook <span style="color:#800000;">'</span><span style="color:#800000;">go-mode-hook </span><span style="color:#800000;">'</span><span style="color:#000000;">(lambda()
(set (</span><span style="color:#0000ff;">make</span>-local-variable <span style="color:#800000;">'</span><span style="color:#800000;">company-backends)</span><span style="color:#800000;">'</span>(company-<span style="color:#000000;">go))
(company</span>-<span style="color:#000000;">mode)))
;; Go oracle
<span style="color:#ff0000;">;; Note: $GOPATH will defined </span></span><span style="color:#ff0000;">in init-exec-path-from-</span><span style="color:#000000;"><span style="color:#ff0000;">shell</span>
(load</span>-<span style="color:#0000ff;">file</span> <span style="color:#800000;">"</span><span style="color:#800000;">$GOPATH/src/golang.org/x/tools/cmd/oracle/oracle.el</span><span style="color:#800000;">"</span><span style="color:#000000;">)
(add</span>-hook <span style="color:#800000;">'</span><span style="color:#800000;">go-mode-hook </span><span style="color:#800000;">'</span>go-oracle-<span style="color:#000000;">mode)
(provide </span><span style="color:#800000;">'</span><span style="color:#800000;">init-go)</span>
;;; init-go.el ends here</pre>
<pre>;;; init-exec-path-from-shell ---<span style="color:#000000;"> exec path form shell
;;; Commentary:
;; Let Emacs use .bashrc </span><span style="color:#0000ff;">file</span><span style="color:#000000;">,especially system $PATH.
;;; Code:
(require</span>-package <span style="color:#800000;">'</span><span style="color:#800000;">exec-path-from-shell)</span>
<span style="color:#000000;">
(when (memq window</span>-system <span style="color:#800000;">'</span><span style="color:#800000;">(mac ns x))</span>
(exec-path-from-shell-<span style="color:#000000;">initialize))
;;; </span><span style="color:#0000ff;">for</span><span style="color:#000000;"> golang
<span style="color:#ff0000;">(exec</span></span><span style="color:#ff0000;">-path-from-shell-copy-env "GOPATH"</span><span style="color:#000000;"><span style="color:#ff0000;">)</span>
(provide </span><span style="color:#800000;">'</span><span style="color:#800000;">init-exec-path-from-shell)</span>
;;; init-exec-path-from-shell.el ends here</pre>
另一种方法:
注意:从github克隆的golang.org应该放在src目录里!
<pre>~/development/go/src ᐅ git clone https:<span style="color:#008000;">//</span><span style="color:#008000;">github.com/golang/tools golang.org/x/tools</span>
正克隆到 <span style="color:#800000;">'</span><span style="color:#800000;">golang.org/x/tools</span><span style="color:#800000;">'</span><span style="color:#000000;">...
remote: Counting objects: </span><span style="color:#800080;">15398</span>, <span style="color:#0000ff;">done</span><span style="color:#000000;">.
接收对象中: </span><span style="color:#800080;">8</span>% (<span style="color:#800080;">1232</span>/<span style="color:#800080;">15398</span>), <span style="color:#800080;">404.01</span> KiB | <span style="color:#800080;">69.00</span> KiB/s </pre>
编译godoc:
<pre>go build golang.org/x/tools/cmd/godoc</pre>
注意:编译出的godoc二进制文件应该放在 ~/development/go/bin目录里!
安装golang教程(这个是英文版的):
<pre>git clone https:<span style="color:#008000;">//</span><span style="color:#008000;">github.com/golang/tour</span></pre>
<pre>go build golang.org/x/tour/<span style="color:#000000;">gotour
golang.org</span>/x/tools/playground/socket/socket.go:<span style="color:#800080;">37</span>:<span style="color:#800080;">2</span>: cannot <span style="color:#0000ff;">find</span> package <span style="color:#800000;">"</span><span style="color:#800000;">golang.org/x/net/websocket</span><span style="color:#800000;">"</span> <span style="color:#0000ff;">in</span><span style="color:#000000;"> any of:
</span>/home/z/go/src/golang.org/x/net/<span style="color:#000000;">websocket (from $GOROOT)
</span>/home/z/development/go/src/golang.org/x/net/websocket (from $GOPATH)</pre>
怎么办?
<pre>ᐅ git clone https:<span style="color:#008000;">//</span><span style="color:#008000;">github.com/golang/net
<span style="color:#ff0000;">注意:gotour和net这2个目录和tools目录是平级的,它们都在$GOPATH/src/golang.org/x 目录下。</span>
</span>x
├── net
├── tools
└── tour
ᐅ go build golang.org/x/tour/gotour</pre>
安装中文版的教程:
<pre>git clone https:<span style="color:#008000;">//</span><span style="color:#008000;">github.com/Go-zh/tour github.com/Go-zh/tour</span>
git clone https:<span style="color:#008000;">//</span><span style="color:#008000;">github.com/Go-zh/tools github.com/Go-zh/tools</span></pre>
注意tour和tools是同级目录。
github.com/Go-zh
├── tools
└── tour
编译中文版教程:
<pre>go build github.com/Go-zh/tour/gotour </pre>
这时会在$GOPATH/src目录中出现一个gotour二进制文件,把它剪切到$GOPATH/bin目录中并重命名为gotour-zh。
在$GOPATH/bin中执行:./gotour-zh 即可开启浏览器。
安装godef:
<pre>git clone https:<span style="color:#008000;">//</span><span style="color:#008000;">github.com/rogpeppe/godef github.com/rogpeppe/godef</span></pre>
<pre>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)</pre>
解决方法:
<pre>git clone https:<span style="color:#008000;">//</span><span style="color:#008000;">github.com/9fans/go 9fans.net/go </span></pre>
然后再编译安装godef:
<pre>go build github.com/rogpeppe/godef</pre>
参考:
<span style="color:#000000;">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</span>
<span style="color:#000000;">--End--</span>
<blockquote class="layui-elem-quote" style="width: 100%;overflow:hidden">
作者: weixin_33888907
链接: http://www.cnblogs.com/ibgo/p/5207025.html
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
</blockquote>
到此这篇关于“Emacs golang 配置”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!