Monaco marker data provider
Provider marker data for Monaco models.
Monaco editor supports marker data to highlight parts of a document using squiggly lines. This is
analogous to diagnostics in the language server protocol. Monaco editor itself only supports this
through the editor.setModelMarkers
function. This allows users to set marker data even if a file
isn’t open. This is useful for situations where a change in one file may lead to a marker data
change in another. However, in many cases models don’t depend on each other to determine marker
data. This is where monaco-marker-data-provider
comes in. It exposes an API to set model markers
using a provider, in a similar fashion as other Monaco providers.
Installation
This project has a peer dependency on monaco-editor
. It’s recommended to add it explicitly.
npm install monaco-editor monaco-marker-data-provider
Usage
import * as monaco from 'monaco-editor';
import { registerMarkerDataProvider } from 'monaco-marker-data-provider';
import { myCustomValidator } from './myCustomValidator';
registerMarkerDataProvider(monaco, 'plaintext', {
owner: 'my-custom-markers',
provideMarkerData(model) {
return myCustomValidator(model.getValue());
},
});
API
registerMarkerDataProvider(monaco, languageId, provider)
This function returns a disposable.
Options
monaco
: The monaco-editor
module instance.languageId
(string
): The language id to register the provider for.provider
(MarkerDataProvider
): The object which provides Monaco marker data.
Types
MarkerDataProvider
An object with the following properties:
owner
: A unique string to determine the owner of the marker data. This may be used to retrieve
the marker data using editor.getModelMarkers(owner)
.provideMarkerData
: A function which provides marker data for the given model. It must return
null
, undefined
, a list of marker data, or a promise that returns those values.doReset
: An optional function to perform a reset after a model has been removed.
License
MIT