some settings for spacemacs golang

wang_yb發表於2018-10-30

spacemacs 中的 golang配置

spacemacs 中的 golang layer 已經有很多預設的配置了, 但是都是針對在 GOPATH 下的配置.
如果你的專案不再預設 的 GOPATH 下, 每次都把自己的專案加入到 GOPATH 也很麻煩, 所以我構造了一些函式, 可以動態的配置 GOPATH

配置

GOPATH 相關配置

  (setq default-gopath (getenv "GOPATH"))
  (setq current-gopath "")

  (defun set-gopath (relative-path)
    (interactive
     (list (read-string "relative path: " "." nil nil nil)))
    (setq current-gopath (file-truename relative-path))
    (setenv "GOPATH" (concat current-gopath  ":" (getenv "GOPATH"))))

  (defun get-gopath ()
    (interactive)
    (message (getenv "GOPATH")))

  (defun reset-gopath ()
    (interactive)
    (setenv "GOPATH" default-gopath)
    (setq current-gopath ""))

golang 編譯配置

  (setq default-go-package "")

  (defun go-install (&optional pkg)
    (interactive
     (list (read-string (format "Package Name[%s]: " default-go-package) nil nil "")))

    (if (not (string= pkg ""))
        (setq default-go-package pkg))

    (projectile-with-default-dir current-gopath
      (projectile-run-compilation (concat "export GOPATH=" current-gopath " && " "go install" " " default-go-package))))

  (spacemacs/set-leader-keys-for-major-mode 'go-mode
    "gi" 'go-install)

使用方法

開啟到專案檔案後, 通過 set-gopath 動態當前專案的 GOPATH
切換專案時, 可以先通過 reset-gopath 恢復預設的 GOPATH, 然後在 set-gopath 設定新的 GOPATH

設定好 GOPATH 之後, 就可以通過 go-install 來編譯工程了(有對應的快捷鍵 gi)
第一次編譯時, 需要輸入packege名稱, 就是對應 src 目錄下的想要編譯的資料夾名稱.

相關文章