Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/tools/gopls: automatically include open packages in the workspace #54261

findleyr opened this issue Aug 4, 2022 · 1 comment
gopls/workspace gopls Tools


Copy link

findleyr commented Aug 4, 2022

Noticed indirectly via #53933: when packages are outside of the workspace, autocompletion stops working because it operates on packages in "TypeCheckWorkspace" mode, which means it does have function bodies for packages outside of the workspace.

That's not wrong, but we should automatically include any open packages in the workspace.

For the most part it should "just work" to adjust our workspace package algorithm, we just need to be sure to recompute workspace packages (snapshot.computeWorkspacePackages) following any didOpen or didClose event.

This is low-hanging fruit, as particularly with #53880 it could significantly improve the user experience with files when opening a package outside the workspace: some functionality will still work, and the user will be alerted that other functionality will be degraded.

@findleyr findleyr added the gopls/workspace label Aug 4, 2022
@findleyr findleyr added this to the gopls/v0.10.0 milestone Aug 4, 2022
@gopherbot gopherbot added Tools gopls labels Aug 4, 2022
Copy link
Contributor Author

findleyr commented Aug 5, 2022

While working on an unrelated test, I realized that the heuristic is not quite right: we should not "include all packages containing open files" in the workspace, but rather "ensure that PackagesForFile(x) for all open files x is included in the workspace". The reason for this is actually subtle: if we reinitialize the view, we may not ask for PackagesForFile for files that aren't included in the workspace, so there is a chicken-and-egg problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
gopls/workspace gopls Tools
None yet

No branches or pull requests

2 participants