about summary refs log tree commit diff
path: root/editors/code/src/rust-analyzer-api.ts
diff options
context:
space:
mode:
authorVeetaha <gerzoh1@gmail.com>2020-02-25 00:48:44 +0200
committerVeetaha <gerzoh1@gmail.com>2020-02-25 00:48:44 +0200
commit39efb301ff7946592ac0d8a64749582daaa67b86 (patch)
treead58316b974b7dc696558a12d9c0fb25779ff25a /editors/code/src/rust-analyzer-api.ts
parentbd4ea87f7442541123e3bbd7e17bfecdfb3c18c6 (diff)
downloadrust-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.ts117
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>;
+}