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

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

Comments

@findleyr
Copy link
Contributor

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 go.work 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
@findleyr
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
Labels
gopls/workspace gopls Tools
Projects
None yet
Development

No branches or pull requests

2 participants