diff options
| author | Veetaha <gerzoh1@gmail.com> | 2020-02-25 00:48:44 +0200 |
|---|---|---|
| committer | Veetaha <gerzoh1@gmail.com> | 2020-02-25 00:48:44 +0200 |
| commit | 39efb301ff7946592ac0d8a64749582daaa67b86 (patch) | |
| tree | ad58316b974b7dc696558a12d9c0fb25779ff25a /editors/code/src/rust-analyzer-api.ts | |
| parent | bd4ea87f7442541123e3bbd7e17bfecdfb3c18c6 (diff) | |
| download | rust-39efb301ff7946592ac0d8a64749582daaa67b86.tar.gz rust-39efb301ff7946592ac0d8a64749582daaa67b86.zip | |
vscode: create rust-analyzer-api.ts
Diffstat (limited to 'editors/code/src/rust-analyzer-api.ts')
| -rw-r--r-- | editors/code/src/rust-analyzer-api.ts | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/editors/code/src/rust-analyzer-api.ts b/editors/code/src/rust-analyzer-api.ts new file mode 100644 index 00000000000..d2738fef323 --- /dev/null +++ b/editors/code/src/rust-analyzer-api.ts @@ -0,0 +1,117 @@ +/** + * This file mirrors `crates/rust-analyzer/src/req.rs` declarations. + */ + +import { RequestType, TextDocumentIdentifier, Position, Range, TextDocumentPositionParams, Location, NotificationType, WorkspaceEdit } from "vscode-languageclient"; + +type Option<T> = null | T; +type Vec<T> = T[]; +type FxHashMap<K extends PropertyKey, V> = Record<K, V>; + +function request<TParams, TResult>(method: string) { + return new RequestType<TParams, TResult, unknown>(`rust-analyzer/${method}`); +} +function notification<TParam>(method: string) { + return new NotificationType<TParam>(method); +} + + +export const analyzerStatus = request<null, string>("analyzerStatus"); + + +export const collectGarbage = request<null, null>("collectGarbage"); + + +export interface SyntaxTreeParams { + textDocument: TextDocumentIdentifier; + range: Option<Range>; +} +export const syntaxTree = request<SyntaxTreeParams, string>("syntaxTree"); + + +export interface ExpandMacroParams { + textDocument: TextDocumentIdentifier; + position: Option<Position>; +} +export interface ExpandedMacro { + name: string; + expansion: string; +} +export const expandMacro = request<ExpandMacroParams, Option<ExpandedMacro>>("expandMacro"); + + +export interface FindMatchingBraceParams { + textDocument: TextDocumentIdentifier; + offsets: Vec<Position>; +} +export const findMatchingBrace = request<FindMatchingBraceParams, Vec<Position>>("findMatchingBrace"); + + +export interface PublishDecorationsParams { + uri: string; + decorations: Vec<Decoration>; +} +export interface Decoration { + range: Range; + tag: string; + bindingHash: Option<string>; +} +export const decorationsRequest = request<TextDocumentIdentifier, Vec<Decoration>>("decorationsRequest"); + + +export const parentModule = request<TextDocumentPositionParams, Vec<Location>>("parentModule"); + + +export interface JoinLinesParams { + textDocument: TextDocumentIdentifier; + range: Range; +} +export const joinLines = request<JoinLinesParams, SourceChange>("joinLines"); + + +export const onEnter = request<TextDocumentPositionParams, Option<SourceChange>>("onEnter"); + +export interface RunnablesParams { + textDocument: TextDocumentIdentifier; + position: Option<Position>; +} +export interface Runnable { + range: Range; + label: string; + bin: string; + args: Vec<string>; + env: FxHashMap<string, string>; + cwd: Option<string>; +} +export const runnables = request<RunnablesParams, Vec<Runnable>>("runnables"); + + +export const enum InlayKind { + TypeHint = "TypeHint", + ParameterHint = "ParameterHint", +} +export interface InlayHint { + range: Range; + kind: InlayKind; + label: string; +} +export interface InlayHintsParams { + textDocument: TextDocumentIdentifier; +} +export const inlayHints = request<InlayHintsParams, Vec<InlayHint>>("inlayHints"); + + +export interface SsrParams { + arg: string; +} +export const ssr = request<SsrParams, SourceChange>("ssr"); + + +export const publishDecorations = notification<PublishDecorationsParams>("publishDecorations"); + + +export interface SourceChange { + label: string; + workspaceEdit: WorkspaceEdit; + cursorPosition: Option<TextDocumentPositionParams>; +} |
