mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 23:13:02 +01:00
Merge pull request #2963 from rcjsuen/model-markers-example
Create example for model markers
This commit is contained in:
commit
005d096784
4 changed files with 55 additions and 0 deletions
|
|
@ -156,6 +156,12 @@
|
||||||
id: 'extending-language-services-hover-provider-example',
|
id: 'extending-language-services-hover-provider-example',
|
||||||
path: 'extending-language-services/hover-provider-example'
|
path: 'extending-language-services/hover-provider-example'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
chapter: 'Extending Language Services',
|
||||||
|
name: 'Model markers example',
|
||||||
|
id: 'extending-language-services-model-markers-example',
|
||||||
|
path: 'extending-language-services/model-markers-example'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
chapter: 'Extending Language Services',
|
chapter: 'Extending Language Services',
|
||||||
name: 'Semantic tokens provider example',
|
name: 'Semantic tokens provider example',
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
<div id="container" style="height: 100%"></div>
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
function validate(model) {
|
||||||
|
const markers = [];
|
||||||
|
// lines start at 1
|
||||||
|
for (let i = 1; i < model.getLineCount() + 1; i++) {
|
||||||
|
const range = {
|
||||||
|
startLineNumber: i,
|
||||||
|
startColumn: 1,
|
||||||
|
endLineNumber: i,
|
||||||
|
endColumn: model.getLineLength(i) + 1
|
||||||
|
};
|
||||||
|
const content = model.getValueInRange(range).trim();
|
||||||
|
const number = Number(content);
|
||||||
|
if (Number.isNaN(number)) {
|
||||||
|
markers.push({
|
||||||
|
message: 'not a number',
|
||||||
|
severity: monaco.MarkerSeverity.Error,
|
||||||
|
startLineNumber: range.startLineNumber,
|
||||||
|
startColumn: range.startColumn,
|
||||||
|
endLineNumber: range.endLineNumber,
|
||||||
|
endColumn: range.endColumn
|
||||||
|
});
|
||||||
|
} else if (!Number.isInteger(number)) {
|
||||||
|
markers.push({
|
||||||
|
message: 'not an integer',
|
||||||
|
severity: monaco.MarkerSeverity.Warning,
|
||||||
|
startLineNumber: range.startLineNumber,
|
||||||
|
startColumn: range.startColumn,
|
||||||
|
endLineNumber: range.endLineNumber,
|
||||||
|
endColumn: range.endColumn
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
monaco.editor.setModelMarkers(model, 'owner', markers);
|
||||||
|
}
|
||||||
|
|
||||||
|
const value = `12345
|
||||||
|
abcd
|
||||||
|
234.56
|
||||||
|
12345
|
||||||
|
abcd
|
||||||
|
234.56`;
|
||||||
|
const uri = monaco.Uri.parse('inmemory://test');
|
||||||
|
const model = monaco.editor.createModel(value, 'demoLanguage', uri);
|
||||||
|
editor = monaco.editor.create(document.getElementById('container'), { model });
|
||||||
|
validate(model);
|
||||||
|
model.onDidChangeContent(() => {
|
||||||
|
validate(model);
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue