単純なのだが、引っかかったためメモとして残す
1. 問題
- emacsでLanguage Server Protocolクライアントであるeglotを使用し、Go言語のserverとしてgoplsを使用した
- 設定した状態のemacsで
.go
ファイルを開くと、ものすごく重い
以下のようなエラーがでてくる
Error in menu-bar-update-hook (imenu-update-menubar): (jsonrpc-error "request id=2 failed:" (jsonrpc-error-message . "Timed out"))
2. 原因
eglotがプロジェクトルートを正しく探すことができていなかった。今回の場合はこのようなメッセージがでていた。
[eglot] Connected! Server `gopls' now managing `go-mode' buffers in project `~'.
ホームフォルダ直下を全て探しにいっていたため、時間がかかっていた。
3. 解決策
プロジェクトルートを設定すればよい。今回の場合はプロジェクトルートがホームディレクトリになっていた。次のページに記述があるように、eglotはproject.elを用いてプロジェクトルートを探しているようだ。
よって、goファイルがある場所で
git init
なりをして、gitのファイル構成を作成してしまうのが簡単と思われる。