8877: feat: allow clients to feature detect symbol filtering r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2021-05-19 12:31:44 +00:00 committed by GitHub
commit f4afffc7e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 12 deletions

View file

@ -122,6 +122,7 @@ pub fn server_capabilities(client_caps: &ClientCapabilities) -> ServerCapabiliti
"runnables": {
"kinds": [ "cargo" ],
},
"workspaceSymbolScopeKindFiltering": true,
})),
}
}

View file

@ -651,32 +651,36 @@ export const enum Direction {
}
```
## Lookup workspace symbol search scope and kind
## Workspace Symbols Filtering
**Issue:** https://github.com/rust-analyzer/rust-analyzer/pull/7698
This request is sent from client to server to search for workspace symbols filtered by an
optional search scope and / or an optional symbol kind.
**Experimental Server Capability:** `{ "workspaceSymbolScopeKindFiltering": boolean }`
**Method:** `workspace/symbol`
Extends the existing `workspace/symbol` request with ability to filter symbols by broad scope and kind of symbol.
If this capability is set, `workspace/symbol` parameter gains two new optional fields:
**Request:** `WorkspaceSymbolParams`
**Response:** `SymbolInformation[] | null`
```typescript
interface lsp_ext.WorkspaceSymbolParams extends WorkspaceSymbolParams {
interface WorkspaceSymbolParams {
/**
* Return only the symbols defined in the specified scope.
*/
searchScope?: WorkspaceSymbolSearchScope;
/**
* Return only the symbols of specified kinds.
*/
searchKind?: WorkspaceSymbolSearchKind;
...
}
const enum WorkspaceSymbolSearchScope {
Workspace = "Workspace",
WorkspaceAndDependencies = "WorkspaceAndDependencies"
Workspace = "workspace",
WorkspaceAndDependencies = "workspaceAndDependencies"
}
const enum WorkspaceSymbolSearchKind {
OnlyTypes = "OnlyTypes",
AllSymbols = "AllSymbols"
OnlyTypes = "onlyTypes",
AllSymbols = "allSymbols"
}
```