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

Improve filtering of file roots #997

Merged
merged 2 commits into from
Mar 21, 2019
Merged

Conversation

vipentti
Copy link
Contributor

@vipentti vipentti commented Mar 19, 2019

ProjectWorkspace::to_roots now returns a new ProjectRoot which contains
information regarding whether or not the given path is part of the current
workspace or an external dependency. This information can then be used in
ra_batch and ra_lsp_server to implement more advanced filtering. This allows
us to filter some unnecessary folders from external dependencies such as tests,
examples and benches.

Relates to discussion in #869

`ProjectWorkspace::to_roots` now returns a new `ProjectRoot` which contains
information regarding whether or not the given path is part of the current
workspace or an external dependency. This information can then be used in
`ra_batch` and `ra_lsp_server` to implement more advanced filtering. This allows
us to filter some unnecessary folders from external dependencies such as tests,
examples and benches.
@vipentti vipentti force-pushed the filter-improvements branch from 4019662 to e32462c Compare March 20, 2019 09:57
@vipentti
Copy link
Contributor Author

Currently for me, this reduces the files from 3599 (38mb) files to 3040 (35mb) files in rust-analyzer

This way the two IncludeRustFiles implementations can simply call the
ProjectRoots' methods, so that the include logic is in one place.
@vipentti
Copy link
Contributor Author

Moved the include logic to ProjectRoot the IncludeRustFiles now contain minimal mapping from ProjectRoot to RootEntry for vfs

@matklad
Copy link
Member

matklad commented Mar 21, 2019

bors r+

Thanks!

bors bot added a commit that referenced this pull request Mar 21, 2019
997: Improve filtering of file roots r=matklad a=vipentti

`ProjectWorkspace::to_roots` now returns a new `ProjectRoot` which contains
information regarding whether or not the given path is part of the current
workspace or an external dependency. This information can then be used in
`ra_batch` and `ra_lsp_server` to implement more advanced filtering. This allows
us to filter some unnecessary folders from external dependencies such as tests,
examples and benches.

Relates to discussion in #869 

Co-authored-by: Ville Penttinen <villem.penttinen@gmail.com>
@bors
Copy link
Contributor

bors bot commented Mar 21, 2019

Build succeeded

@bors bors bot merged commit c6d6e6c into rust-lang:master Mar 21, 2019
alsuren added a commit to alsuren/rust-analyzer that referenced this pull request Aug 8, 2019
Previously it was spending multiple hours adding file watches in large trees
that don't contain any rust files.

I think that a reasonable way to generalise this would be to allow projects
to add a .rustignore file with similar syntax to .gitignore, and use one
of the existing .gitignore parsing crates to find and read it.

It may also be worth parsing .gitignore files by default?

See also rust-lang#997 and https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/ignoring.20in.20VFS
for previous discussions on this topic.
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

Successfully merging this pull request may close these issues.

2 participants