Scope Focus
When working on a large repo, it's often desired to focus on a subset of files. This extension lets you switch among predefined subsets (called "scopes") and hide rest files. It aims to provide a similar experience to IntelliJ's scopes.
You can consider it as a workaround of vscode#869.
Features
- Create scopes.
- Switch among them.
Extension Settings
Workspace Settings
scope-focus.activeScope
: Switch active scope. You can operate this on status bar at the bottom.
scope-focus.base
: Define base config shared by all scopes.
scope-focus.scopes
: Define scopes. Hover on settings to see details.
Examples
Taking llvm-project as an example. If you want to focus on clang
and llvm
and then exclude cmake
sub-folders, you can configure like this:
{
"scope-focus.activeScope": "LLVM/Clang",
"scope-focus.scopes": {
"LLVM/Clang": {
"include": ["clang", "llvm"],
"exclude": ["*/cmake"]
}
}
}
If you want to include / exclude some paths in all scopes, you can configure the base scope:
{
"scope-focus.base": {
"include": ["README.md"],
"exclude": ["*/CMakeLists.txt"]
}
}
Known Issues
- This extension works by changing the workspace-level
files.exclude
setting. Yours will be overwritten.
- Currently it doesn't support multi-root workspaces. File an issue if you need this feature.
Under the hood, this extension walks through the project directory according to your glob patterns. That could cause performance issue for the **
pattern. For example, pattern clang
is effectively the same as clang/**
, but the former is much faster since we don't walk deeper. Try to avoid **
as much as possible, especially on large repositories.
Alternatives
Release Notes
0.1.2
Add scope-focus.base
config.
0.1.1
Avoid creating .vscode/settings.json
.
0.1.0
Basic implementation.