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 目录下的想要编译的文件夹名称.