mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 13:25:09 +00:00
feat: allow clients to feature detect symbol filtering
This commit is contained in:
parent
49a5d6a8d4
commit
1fd31f7f4c
2 changed files with 17 additions and 12 deletions
|
@ -122,6 +122,7 @@ pub fn server_capabilities(client_caps: &ClientCapabilities) -> ServerCapabiliti
|
||||||
"runnables": {
|
"runnables": {
|
||||||
"kinds": [ "cargo" ],
|
"kinds": [ "cargo" ],
|
||||||
},
|
},
|
||||||
|
"workspaceSymbolScopeKindFiltering": true,
|
||||||
})),
|
})),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
**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
|
**Experimental Server Capability:** `{ "workspaceSymbolScopeKindFiltering": boolean }`
|
||||||
optional search scope and / or an optional symbol kind.
|
|
||||||
|
|
||||||
**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
|
```typescript
|
||||||
interface lsp_ext.WorkspaceSymbolParams extends WorkspaceSymbolParams {
|
interface WorkspaceSymbolParams {
|
||||||
|
/**
|
||||||
|
* Return only the symbols defined in the specified scope.
|
||||||
|
*/
|
||||||
searchScope?: WorkspaceSymbolSearchScope;
|
searchScope?: WorkspaceSymbolSearchScope;
|
||||||
|
/**
|
||||||
|
* Return only the symbols of specified kinds.
|
||||||
|
*/
|
||||||
searchKind?: WorkspaceSymbolSearchKind;
|
searchKind?: WorkspaceSymbolSearchKind;
|
||||||
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
const enum WorkspaceSymbolSearchScope {
|
const enum WorkspaceSymbolSearchScope {
|
||||||
Workspace = "Workspace",
|
Workspace = "workspace",
|
||||||
WorkspaceAndDependencies = "WorkspaceAndDependencies"
|
WorkspaceAndDependencies = "workspaceAndDependencies"
|
||||||
}
|
}
|
||||||
|
|
||||||
const enum WorkspaceSymbolSearchKind {
|
const enum WorkspaceSymbolSearchKind {
|
||||||
OnlyTypes = "OnlyTypes",
|
OnlyTypes = "onlyTypes",
|
||||||
AllSymbols = "AllSymbols"
|
AllSymbols = "allSymbols"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue