Skip to content

Commit 86079ad

Browse files
committed
feat: completed setModelMarkers
1 parent c599f2b commit 86079ad

File tree

2 files changed

+52
-11
lines changed

2 files changed

+52
-11
lines changed

src/monaco/code2monaco.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,3 +175,47 @@ export function asParameterInformation(parameterInformation: vscode.ParameterInf
175175
documentation: parameterInformation.documentation,
176176
};
177177
}
178+
179+
export function asMarkerData(diagnostic: vscode.Diagnostic): monaco.editor.IMarkerData {
180+
return {
181+
code: diagnostic.code?.toString(),
182+
severity: asMarkerSeverity(diagnostic.severity),
183+
message: diagnostic.message,
184+
source: diagnostic.source,
185+
...asRange(diagnostic.range),
186+
relatedInformation: diagnostic.relatedInformation?.map(asRelatedInformation),
187+
tags: diagnostic.tags?.map(asMarkerTag),
188+
};
189+
}
190+
191+
export function asMarkerTag(tag: vscode.DiagnosticTag): monaco.MarkerTag {
192+
switch (tag) {
193+
case vscode.DiagnosticTag.Unnecessary:
194+
return monaco.MarkerTag.Unnecessary;
195+
case vscode.DiagnosticTag.Deprecated:
196+
return monaco.MarkerTag.Deprecated;
197+
}
198+
}
199+
200+
export function asRelatedInformation(relatedInformation: vscode.DiagnosticRelatedInformation): monaco.editor.IRelatedInformation {
201+
return {
202+
resource: asUri(relatedInformation.location.uri),
203+
message: relatedInformation.message,
204+
...asRange(relatedInformation.location.range),
205+
};
206+
}
207+
208+
export function asMarkerSeverity(severity: vscode.DiagnosticSeverity | undefined): monaco.MarkerSeverity {
209+
switch (severity) {
210+
case vscode.DiagnosticSeverity.Error:
211+
return monaco.MarkerSeverity.Error;
212+
case vscode.DiagnosticSeverity.Warning:
213+
return monaco.MarkerSeverity.Warning;
214+
case vscode.DiagnosticSeverity.Information:
215+
return monaco.MarkerSeverity.Info;
216+
case vscode.DiagnosticSeverity.Hint:
217+
return monaco.MarkerSeverity.Hint;
218+
default:
219+
return monaco.MarkerSeverity.Info;
220+
}
221+
}

src/monaco/ls.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -272,20 +272,17 @@ export function setupValidate(editor: monaco.editor.IStandaloneCodeEditor, ls: L
272272
throw new Error('No model');
273273
}
274274

275-
const diagnostics = await ls.doValidation(model.uri.toString());
275+
const diagnostics = await ls.doValidation(model.uri.toString(), unfinishResult => {
276+
monaco.editor.setModelMarkers(
277+
model,
278+
lang,
279+
unfinishResult.map(code2monaco.asMarkerData),
280+
);
281+
});
276282
monaco.editor.setModelMarkers(
277283
model,
278284
lang,
279-
diagnostics.map((diagnostic) => {
280-
return {
281-
severity: diagnostic.severity === 1 ? monaco.MarkerSeverity.Error : monaco.MarkerSeverity.Warning,
282-
startLineNumber: diagnostic.range.start.line + 1,
283-
startColumn: diagnostic.range.start.character + 1,
284-
endLineNumber: diagnostic.range.end.line + 1,
285-
endColumn: diagnostic.range.end.character + 1,
286-
message: diagnostic.message,
287-
};
288-
}),
285+
diagnostics.map(code2monaco.asMarkerData),
289286
);
290287
};
291288

0 commit comments

Comments
 (0)