Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 31 additions & 13 deletions client/src/monaco-converter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ import {
Command, CodeLens, FormattingOptions, TextEdit, WorkspaceEdit, DocumentLinkParams, DocumentLink,
MarkedString, MarkupContent, ColorInformation, ColorPresentation, FoldingRange, FoldingRangeKind,
DiagnosticRelatedInformation, MarkupKind, SymbolKind, DocumentSymbol, CodeAction, SignatureHelpContext, SignatureHelpTriggerKind,
SemanticTokens, InsertTextMode, AnnotatedTextEdit, ChangeAnnotation
SemanticTokens, InsertTextMode, AnnotatedTextEdit, ChangeAnnotation, CodeDescription
} from './services';

export type RecursivePartial<T> = {
[P in keyof T]?: RecursivePartial<T[P]>;
};

export interface ProtocolDocumentLink extends monaco.languages.ILink {
data?: any;
data?: unknown;
}
export namespace ProtocolDocumentLink {
export function is(item: any): item is ProtocolDocumentLink {
Expand All @@ -36,7 +36,7 @@ export namespace ProtocolDocumentLink {
}

export interface ProtocolCodeLens extends monaco.languages.CodeLens {
data?: any;
data?: unknown;
}
export namespace ProtocolCodeLens {
export function is(item: any): item is ProtocolCodeLens {
Expand All @@ -45,7 +45,7 @@ export namespace ProtocolCodeLens {
}

export interface ProtocolCompletionItem extends monaco.languages.CompletionItem {
data?: any;
data?: unknown;
fromEdit?: boolean;
documentationFormat?: string;
originalItemKind?: CompletionItemKind;
Expand All @@ -57,9 +57,18 @@ export namespace ProtocolCompletionItem {
return !!item && 'data' in item;
}
}
export interface ProtocolIMarkerData extends monaco.editor.IMarkerData {
data?: unknown;
codeDescription?: CodeDescription;
}
export namespace ProtocolIMarkerData {
export function is(item: any): item is ProtocolIMarkerData {
return !!item && 'data' in item;
}
}

export interface ProtocolCodeAction extends monaco.languages.CodeAction {
data?: any;
data?: unknown;
}
export namespace ProtocolCodeAction {
export function is(item: any): item is ProtocolCodeAction {
Expand Down Expand Up @@ -236,7 +245,7 @@ export class MonacoToProtocolConverter {
if (item.command) { result.command = this.asCommand(item.command); }
if (item.commitCharacters) { result.commitCharacters = item.commitCharacters.slice(); }
if (item.command) { result.command = this.asCommand(item.command); }
// TODO if (item.preselect === true || item.preselect === false) { result.preselect = item.preselect; }
if (item.preselect === true || item.preselect === false) { result.preselect = item.preselect; }
if (protocolItem) {
if (protocolItem.data !== undefined) {
result.data = protocolItem.data;
Expand All @@ -245,6 +254,7 @@ export class MonacoToProtocolConverter {
result.deprecated = protocolItem.deprecated;
}
}
if (item.tags) { result.tags = item.tags?.slice(); }
return result;
}

Expand Down Expand Up @@ -373,7 +383,12 @@ export class MonacoToProtocolConverter {
asDiagnostic(marker: monaco.editor.IMarkerData): Diagnostic {
const range = this.asRange(new this._monaco.Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn))
const severity = this.asDiagnosticSeverity(marker.severity);
return Diagnostic.create(range, marker.message, severity, marker.code as string, marker.source);
const diag = Diagnostic.create(range, marker.message, severity, marker.code as string, marker.source);
if (ProtocolIMarkerData.is(marker)) {
diag.data = marker.data
diag.codeDescription = marker.codeDescription;
}
return diag
}

asDiagnostics(markers: monaco.editor.IMarkerData[]): Diagnostic[] {
Expand Down Expand Up @@ -935,16 +950,16 @@ export class ProtocolToMonacoConverter {
}

asDiagnostics(diagnostics: undefined): undefined;
asDiagnostics(diagnostics: Diagnostic[]): monaco.editor.IMarkerData[];
asDiagnostics(diagnostics: Diagnostic[] | undefined): monaco.editor.IMarkerData[] | undefined;
asDiagnostics(diagnostics: Diagnostic[] | undefined): monaco.editor.IMarkerData[] | undefined {
asDiagnostics(diagnostics: Diagnostic[]): ProtocolIMarkerData[];
asDiagnostics(diagnostics: Diagnostic[] | undefined): ProtocolIMarkerData[] | undefined;
asDiagnostics(diagnostics: Diagnostic[] | undefined): ProtocolIMarkerData[] | undefined {
if (!diagnostics) {
return undefined;
}
return diagnostics.map(diagnostic => this.asDiagnostic(diagnostic));
}

asDiagnostic(diagnostic: Diagnostic): monaco.editor.IMarkerData {
asDiagnostic(diagnostic: Diagnostic): ProtocolIMarkerData {
return {
code: typeof diagnostic.code === "number" ? diagnostic.code.toString() : diagnostic.code,
severity: this.asSeverity(diagnostic.severity),
Expand All @@ -955,7 +970,9 @@ export class ProtocolToMonacoConverter {
endLineNumber: diagnostic.range.end.line + 1,
endColumn: diagnostic.range.end.character + 1,
relatedInformation: this.asRelatedInformations(diagnostic.relatedInformation),
tags: diagnostic.tags
codeDescription: diagnostic.codeDescription,
tags: diagnostic.tags,
data: diagnostic.data
}
}

Expand Down Expand Up @@ -1029,7 +1046,8 @@ export class ProtocolToMonacoConverter {
if (item.deprecated === true || item.deprecated === false) {
result.deprecated = item.deprecated;
}
result.insertTextMode = item.insertTextMode
if (item.insertTextMode) { result.insertTextMode = item.insertTextMode; }
if (item.tags) { result.tags = item.tags; }
return result;
}

Expand Down