Package Exports
- monaco-editor-textmate-test
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (monaco-editor-textmate-test) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Wire monaco-textmate with monaco-editor
Install
npm i monaco-editor-textmatePlease install peer dependencies if you haven't already
npm i monaco-textmate monaco-editor onigasmUsage
import { loadWASM } from 'onigasm' // peer dependency of 'monaco-textmate'
import { Registry } from 'monaco-textmate' // peer dependency
import { wireTmGrammars } from 'monaco-editor-textmate'
export async function liftOff() {
await loadWASM(`path/to/onigasm.wasm`) // See https://www.npmjs.com/package/onigasm#light-it-up
const registry = new Registry({
getGrammarDefinition: async (scopeName) => {
return {
format: 'json',
content: await (await fetch(`static/grammars/css.tmGrammar.json`)).text()
}
}
})
// map of monaco "language id's" to TextMate scopeNames
const grammars = new Map()
grammars.set('css', 'source.css')
grammars.set('html', 'text.html.basic')
grammars.set('typescript', 'source.ts')
await wireTmGrammars(monaco, registry, grammars)
var editor = monaco.editor.create(document.getElementById('container'), {
value: [
'html, body {',
' margin: 0;',
'}'
].join('\n'),
language: 'css' // this won't work out of the box, see below for more info
})
}Limitation
monaco-editor distribution comes with built-in tokenization support for few languages. Because of this monaco-editor-textmate cannot
be used with monaco-editor without some modification, see explanation of this problem here.
Solution
To get monaco-editor-textmate working with monaco-editor, you're advised to use Webpack with monaco-editor-webpack-plugin which allows you to control which of "built-in" languages should monaco-editor use/bundle, leaving the rest.
With that control you must exclude any/all languages for which you'd like to use TextMate grammars based tokenization instead.
License
MIT