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

Enhance workspace tree view with filtering and additional node annotations #247

Open
4 tasks
benhutchison opened this issue Dec 17, 2021 · 1 comment
Open
4 tasks

Comments

@benhutchison
Copy link

benhutchison commented Dec 17, 2021

Is your feature request related to a problem? Please describe.

The Metals workspace tree view lets a user browse the code in their project and its dependent libraries. However, the data under the library node can quickly become so large that it reduces the usefulness, relevance and usability of the view. Example:

Screen Shot 2021-12-16 at 7 06 17 pm

This request suggests ways that the user could filter the workspace view to improve its usability and value.

Describe the solution you'd like

This is a list of multiple discrete improvements to the workspace view. Although all would be useful, they are ordered in approximately descending order of value from most useful first.

  • Ability to filter out of the libraries view dependencies of SBT itself, from dependencies of my project code. Usually, I care about my project, and deps of SBT are less relevant.

  • Ability to filter out of view any "evicted" library versions, by which I mean libraries where another version has been selected instead.

  • Ability to filter or narrow view to the library dependencies of a specific SBT subproject. Multi-project builds are common and good practice. The library deps of different subprojects can differ significantly (real life example I was working on today was kafkaWorker vs webServer subprojects). It would be useful to view just the library for a specific module.

  • Ability to view (and select!) some key attributes of a library dependency in some panel or overlay, perhaps via right-clicking on it. The most useful attributes would be

    1. What other libraries depend on it
    2. What libraries it depends upon
    3. The path to the library jar on disk, so it can be copied. While the path info is currently shown in a Hover, there seems no way to copy the path to the clipboard. When troubleshooting issues, we sometimes have need to inspect actual library files, be it for size, jar contents, or timestamps. Once path is in clipboard, can easily go to file in the shell.

Describe alternatives you've considered

The present view is still usable, and other methods like sbt dependencyList can provide data. This feature is about improving UX, especially when handling larger projects.

Additional contex

No response

Search terms

dependencies libraries workspace navigation browse

@tgodzik
Copy link
Contributor

tgodzik commented Dec 17, 2021

Thanks for reporting! A lot of good points here, I think we can improve the libraries view, we've neglected it recently.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants