1. 程式人生 > >some settings for spacemacs golang

some settings for spacemacs golang

rac 使用 配置 函數 lisp class isp ren 默認的配置

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

some settings for spacemacs golang