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 目錄下的想要編譯的資料夾名稱.