$ gopls version golang.org/x/tools/gopls v0.7.3 golang.org/x/tools/gopls@v0.7.3 h1:Lru57ht8vtDMouRskFC085VAjBAZRAISd/lwvwOOV0Q=
Monorepoなリポジトリ内のサブプロジェクトの開発でEmacs + goplsが動かないなーと思っていて *lsp-log*
bufferをみると以下のようなエラーが出ていました。
errors loading workspace: gopls requires a module at the root of your workspace. You can work with multiple modules by opening each one as a workspace folder. Improvements to this workflow will be coming soon, and you can learn more here: https://github.com/golang/tools/blob/master/gopls/doc/workspace.md. snapshot=0 directory=file:///Users/k1low/src/path/to/monorepo
https://github.com/golang/tools/blob/master/gopls/doc/workspace.md によると、通常の設定+Multiple modules構成*1では動かないらしいとのこと。
goplsの experimentalWorkspaceModule
の設定を有効にすることで、The workspace moduleという機能を有効になりMultiple modules構成に対応ができるとのこと。
手元の環境では上記を設定とりあえず有効にしてみたらちゃんと補完されました。
Emacsだと以下のような感じ。
(lsp-register-custom-settings '( ;; [...] ("gopls.experimentalWorkspaceModule" t t) ;; [...] ))
*1:私は、「プロジェクトルート以外にgo.modがある構成」と理解しました