教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Emacs golang 配置

Emacs golang 配置

发布时间:2022-01-25   编辑:jiaochengji.com
教程集为您提供Emacs golang 配置等资源,欢迎您收藏本站,我们将为您提供最新的Emacs golang 配置资源

在配置前需要下载用到的包:

<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>

转载于:https://www.cnblogs.com/ibgo/p/5207025.html

到此这篇关于“Emacs golang 配置”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
制定Golang的Emacs配置
Emacs golang 配置
Bash 快捷键 大全
python都用什么写代码
golang读取配置文件(ini文件)
go 替换文件某一行_golang快速入门[3]-go语言helloworld
golang基础教程
php代码错误检测与校验
Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件
golang json文件存取

[关闭]
~ ~