I’m using go-mode and needed the following script to correctly guess my GOPATH:
(defun go-set-project-with-guard () (let* ((g (go-guess-gopath)) (d (concat (getenv "HOME") "/src/golang")) (r (concat (getenv "HOME") "/src:")) (has-match (string-match r g))) (if (not (eq 0 has-match)) (setenv "GOPATH" d) (setenv "GOPATH" g)))) (eval-after-load 'go-mode '(add-hook 'go-mode-hook 'go-set-project-with-guard))
The problem with using go-mode’s script was that my default path for code is ~/src. Which means that go-guess-gopath will recurse up to the top of that path rather than remaining at ~/src/golang.
So I wrapped the script with my own fn to check if script returns incorrect pathing, and set it correctly if so.
PS - I’d prefer to use
apply-partially here for
concat '(getenv "HOME")' but didn’t get it working in 10 min and figured my time was better spent posting this blog entry.