iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 21
0
Software Development

Emacs 來寫程式系列 第 21

[Emacs-21] 用 Emacs 來寫 Go 設定篇

Emacs 對於編輯 Go 程式的支援

  • 程式美化排版: Go-mode + gofmt
  • 自動加入或刪除 import: Go-mode + goimport
  • 查看函數的定義:Go-mode + godoc
  • 跳到函式定義: Go-mode + godef
  • 語法檢查: flycheck + golint
  • 程式自動補全:Company + gocode
  • 緩衝區顯示函式定義:go-eldoc + gocode
  • 查詢變數或函式的定義,有多少地方使用,package 的 API 有哪些,interface 的 type...: go-guru

安裝 Go

# for go setup
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
  • 根據 $GOPATH 來建立目錄,一般 Go 的 workspace 會有固定的子目錄,例如
go
├── bin
└── src
    ├── github.com
    │   ├── jerryhsieh
    │   │   └── myproject

Go 安裝相關套件

在 Go workspace 下,執行以下指令來安裝

$go get golang.org/x/tools/cmd/goimports
$go get golang.org/x/tools/cmd/godoc
$go get github.com/rogpeppe/godef
$go get golang.org/x/tools/cmd/guru
$go get golang.org/x/lint/golint
$go get github.com/nsf/gocode
$go get golang.org/x/tools/cmd/gorename

安裝完後,Go workspace 應該像是

go
├── bin
│   ├── gocode
│   ├── godef
│   ├── godoc
│   ├── goimports
│   ├── golint
│   └── guru
└── src
    ├── github.com
    │   ├── jerryhsieh
    │   │   └── myproject
    │   ├── nsf
    │   │   └── gocode
    │   └── rogpeppe
    │       └── godef
    └── golang.org
        └── x
            ├── lint
            └── tools

安裝 Emacs 套件

(use-package go-mode
  :ensure t
  :mode (("\\.go\\'" . go-mode))
  :hook ((before-save . gofmt-before-save))
  :config
  (setq gofmt-command "goimports")
  (use-package company-go
    :ensure t
    :config
    (add-hook 'go-mode-hook (lambda()
                              (add-to-list (make-local-variable 'company-backends)
                                           '(company-go company-files company-yasnippet company-capf))))
    )
  (use-package go-eldoc
    :ensure t
    :hook (go-mode . go-eldoc-setup)
    )
  (use-package go-guru
    :ensure t
    :hook (go-mode . go-guru-hl-identifier-mode)
    )
  (use-package go-rename
    :ensure t)
  )
  • 使用 Go-mode
  • 在儲存檔案前,呼叫 gofmt
  • 設定 gofmt 的命令為 goimports
  • 設定 local Company-backends 為 (company-go company-files company-yasnippet company-capf)
  • 安裝 go-eldoc,設定使用在 go-mode 上
  • 安裝 go-guro, 設定使用在 go-mode 上
  • 安裝 go-rename

相關影片:
相關簡報:簡報
相關程式: Github,請下載到 ~/.emacs.d/ 下,啟動 Emacs 會自動安裝各相關套件
相關資訊:請參考我的部落格


上一篇
[Emacs-20] 用 Emacs 來寫 javascript 的小範例
下一篇
[Emacs-22] 用 Emacs 來寫 Go 之範例篇
系列文
Emacs 來寫程式30

尚未有邦友留言

立即登入留言