Spacemacsで環境変数が読まれなくて困った
2019年11月6日時点のSpacemacsのdevelopブランチを使ってる人間の感想です。
/icons/hr.icon
背景
最近、GolangでHTTPサーバーでも実装しようと思って環境整備をしていた。
SpacemacsでGolangの環境を整える
問題
適当な場所にGOPATHを設定して、export PATH=$PATH:$GOPATH/binをrcファイルに書き加えて、Emacsを立ち上げたところ、LSPサーバーのコマンド(gopls)が見つからないとエラーが表示された。ターミナルから実行すると使えるので、Emacsの起動時にパスが引き継がれない問題かなーとは思ったのだが、今までは気にすることなく使えていたためおかしいと思い調査することに。
原因
素のEmacsの場合、exec-path-from-shellあたりを適切に設定していれば良いのだが、Spacemacsの場合初回起動時に.spacemacs.envという環境変数を全部書き出したものを保存しているらしい。そして、それ以後の起動時にはそのファイルから環境変数が設定されるため、今回のように後からrcファイルを書き換えてしまうと、その変更が反映されないよう。
このときどうしたらいいかというと、Spacemacsを立ち上げている状態でspacemacs/force-init-spacemacs-envというコマンドを叩けばよいらしい。そうすると現在の環境変数がすべて読み込まれるようになる。
このあたりの細かい話は実際に.spacemacs.envを見ると頭の方に説明書きがあるので、そちらを参照してほしい。
ということで無事、LSPサーバーを起動できるようになりました。