zoukankan      html  css  js  c++  java
  • Emacs golang 配置

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

    1. godoc
    2. godef
    3. gocode
    4. 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--

  • 相关阅读:
    安装SQL server 2016遇到问题
    Python:dictionary
    Python: tree data structure
    python3.4 data type
    Python 3.4 Library setup
    Python 3.4 send mail
    SDN实验---Ryu的应用开发(四)北向接口RESTAPI
    SDN实验---Ryu的应用开发(四)基于跳数的最短路径转发原理
    SDN实验---Ryu的应用开发(三)流量监控
    python---基础知识回顾(十)进程和线程(协程gevent:线程在I/O请求上的优化)
  • 原文地址:https://www.cnblogs.com/ibgo/p/5207025.html
Copyright © 2011-2022 走看看