Skip to content

Commit e1a8c76

Browse files
authored
Merge pull request #57 from CodinGame/do-not-use-custom-monaco
Update to monaco 0.34
2 parents c52fdca + e02f1a5 commit e1a8c76

36 files changed

+2619
-2793
lines changed

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,7 @@ To enable them, import the following files:
6666
##### Highlighting/theme
6767

6868
This library uses VS Code themes instead of Monaco theme.
69-
To add your custom theme, use the `addVSCodeTheme` method.
70-
71-
:warning: this method returns a promise, you need to wait for it before calling `monaco.editor.setTheme`.
69+
To add your custom theme, use the `defineVSCodeTheme` method.
7270

7371
Default Monaco theme shouldn't be used.
7472

package-lock.json

Lines changed: 2320 additions & 1922 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"private": false,
55
"description": "Enhanced Monaco editor with TextMate grammars and more",
66
"scripts": {
7-
"build": "npm run lint && rollup --config rollup.config.ts --configPlugin typescript && npm run generate-types",
7+
"build": "npm run lint && npm run compile && npm run generate-types",
8+
"compile": "rollup --config rollup.config.ts --configPlugin typescript",
89
"generate-types": "tsc --project tsconfig.types.json",
910
"update-extensions": "node --loader ts-node/esm update-extensions.ts",
1011
"lint": "eslint --ext .ts src update-extensions.ts"
@@ -65,36 +66,36 @@
6566
"stats.html"
6667
],
6768
"dependencies": {
68-
"monaco-editor": "npm:@codingame/monaco-editor@^0.33.6",
69-
"vscode": "npm:@codingame/monaco-vscode-api@~1.67.19",
69+
"monaco-editor": "npm:@codingame/monaco-editor@^0.34.0",
70+
"vscode": "npm:@codingame/monaco-vscode-api@~1.69.2",
7071
"vscode-oniguruma": "^1.6.2"
7172
},
7273
"devDependencies": {
73-
"@babel/core": "7.18.5",
74-
"@babel/plugin-proposal-class-properties": "7.17.12",
75-
"@babel/plugin-proposal-optional-chaining": "7.17.12",
76-
"@babel/preset-env": "7.18.2",
77-
"@babel/preset-typescript": "7.17.12",
78-
"@babel/runtime": "7.18.3",
79-
"@codingame/eslint-config": "^1.1.2",
80-
"@codingame/tsconfig": "^1.0.5",
74+
"@babel/core": "7.18.10",
75+
"@babel/plugin-proposal-class-properties": "7.18.6",
76+
"@babel/plugin-proposal-optional-chaining": "7.18.9",
77+
"@babel/preset-env": "7.18.10",
78+
"@babel/preset-typescript": "7.18.6",
79+
"@babel/runtime": "7.18.9",
80+
"@codingame/eslint-config": "^1.1.6",
81+
"@codingame/tsconfig": "^1.1.0",
8182
"@rollup/plugin-alias": "3.1.9",
8283
"@rollup/plugin-babel": "5.3.1",
83-
"@rollup/plugin-commonjs": "22.0.0",
84+
"@rollup/plugin-commonjs": "22.0.2",
8485
"@rollup/plugin-json": "4.1.0",
8586
"@rollup/plugin-node-resolve": "13.3.0",
86-
"@rollup/plugin-typescript": "^8.3.3",
87+
"@rollup/plugin-typescript": "^8.3.4",
8788
"@types/ini": "1.3.31",
8889
"@types/js-yaml": "^4.0.5",
8990
"@types/node": "16.11.7",
9091
"@types/rollup-plugin-node-builtins": "^2.1.2",
91-
"@types/vscode": "~1.67.0",
92-
"@typescript-eslint/eslint-plugin": "5.27.1",
93-
"@typescript-eslint/parser": "5.27.1",
94-
"conventional-changelog-conventionalcommits": "^4.6.3",
92+
"@types/vscode": "~1.69.1",
93+
"@typescript-eslint/eslint-plugin": "5.33.1",
94+
"@typescript-eslint/parser": "5.33.1",
95+
"conventional-changelog-conventionalcommits": "^5.0.0",
9596
"cson-parser": "4.0.9",
9697
"deep-equal": "2.0.5",
97-
"eslint": "8.17.0",
98+
"eslint": "8.22.0",
9899
"eslint-config-standard": "17.0.0",
99100
"eslint-plugin-import": "2.26.0",
100101
"eslint-plugin-node": "11.1.0",
@@ -106,18 +107,18 @@
106107
"json5": "2.2.1",
107108
"monaco-emacs": "^0.3.0",
108109
"monaco-vim": "^0.3.4",
109-
"postcss": "8.4.14",
110-
"rollup": "2.75.6",
110+
"postcss": "8.4.16",
111+
"rollup": "2.78.0",
111112
"rollup-plugin-json5": "1.0.0",
112113
"rollup-plugin-node-builtins": "^2.1.2",
113114
"rollup-plugin-string": "^3.0.0",
114115
"rollup-plugin-terser": "^7.0.2",
115-
"rollup-plugin-visualizer": "5.6.0",
116+
"rollup-plugin-visualizer": "5.7.1",
116117
"rollup-plugin-web-worker-loader": "1.6.1",
117-
"ts-node": "10.8.1",
118+
"ts-node": "10.9.1",
118119
"tslib": "^2.4.0",
119-
"typescript": "4.7.3",
120-
"vscode-textmate": "^6.0.0"
120+
"typescript": "4.7.4",
121+
"vscode-textmate": "^7.0.1"
121122
},
122123
"browserslist": [
123124
"defaults",

src/configuration/files.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import * as monaco from 'monaco-editor'
2-
const configurationRegistry = monaco.extra.Registry.as<monaco.extra.IConfigurationRegistry>(monaco.extra.ConfigurationExtensions.Configuration)
1+
import { configurationRegistry, ConfigurationScope } from 'vscode/service-override/configuration'
32

43
/**
54
* comes from https://github.com/microsoft/vscode/blob/16d0a319b28caa4b6cf4e6801fd508282b7533e0/src/vs/workbench/contrib/files/browser/files.contribution.ts#L132
@@ -8,7 +7,6 @@ const configurationRegistry = monaco.extra.Registry.as<monaco.extra.IConfigurati
87
export const FILES_EXCLUDE_CONFIG = 'files.exclude'
98
export const FILES_ASSOCIATIONS_CONFIG = 'files.associations'
109
const isWeb = true
11-
const ConfigurationScope = monaco.extra.ConfigurationScope
1210
const nls = {
1311
localize: (key: string, defaultValue: string) => defaultValue
1412
}

src/configuration/index.ts

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,33 @@
11
import * as monaco from 'monaco-editor'
2-
import { IConfigurationChangeEvent, IConfigurationService } from 'vscode/services'
2+
import { StandaloneServices, IConfigurationChangeEvent, IConfigurationService } from 'vscode/services'
33
import * as vscode from 'vscode'
4-
import { updateUserConfiguration } from 'vscode/service-override/configuration'
4+
import { configurationRegistry, updateUserConfiguration, IConfigurationNode, IConfigurationDefaults } from 'vscode/service-override/configuration'
55
import extensions from '../languages/extensions/extensions.json'
66
import './files'
77

8-
const configurationRegistry = monaco.extra.Registry.as<monaco.extra.IConfigurationRegistry>(monaco.extra.ConfigurationExtensions.Configuration)
98
configurationRegistry.registerDefaultConfigurations([{
109
overrides: {
1110
'editor.codeLens': false,
1211
'editor.fontSize': 12,
1312
'editor.maxTokenizationLineLength': 1000,
1413
'editor.quickSuggestions': false,
15-
'files.eol': '\n'
14+
'files.eol': '\n',
15+
'editor.semanticTokenColorCustomizations': {
16+
rules: {
17+
'*.static': {
18+
fontStyle: 'italic'
19+
},
20+
'*.final.static': {
21+
fontStyle: 'italic bold'
22+
},
23+
'*.readonly': {
24+
fontStyle: 'bold'
25+
},
26+
'*.deprecated': {
27+
fontStyle: 'strikethrough'
28+
}
29+
}
30+
}
1631
}
1732
}])
1833

@@ -21,23 +36,23 @@ configurationRegistry.registerDefaultConfigurations([{
2136
}])
2237

2338
export function onConfigurationChanged (listener: (e: IConfigurationChangeEvent) => void): vscode.Disposable {
24-
const configurationService = monaco.extra.StandaloneServices.get(IConfigurationService)
39+
const configurationService = StandaloneServices.get(IConfigurationService)
2540
return configurationService.onDidChangeConfiguration(listener)
2641
}
2742

2843
export function getConfiguration<C = Partial<monaco.editor.IEditorOptions>> (language?: string, section: string = 'editor'): C | undefined {
29-
const configurationService = monaco.extra.StandaloneServices.get(IConfigurationService)
44+
const configurationService = StandaloneServices.get(IConfigurationService)
3045
return configurationService.getValue(section, { overrideIdentifier: language })
3146
}
3247

3348
export {
3449
updateUserConfiguration
3550
}
3651

37-
export function registerConfigurations (configurations: monaco.extra.IConfigurationNode[], validate?: boolean): void {
52+
export function registerConfigurations (configurations: IConfigurationNode[], validate?: boolean): void {
3853
configurationRegistry.registerConfigurations(configurations, validate)
3954
}
4055

41-
export function registerDefaultConfigurations (defaultConfigurations: monaco.extra.IStringDictionary<unknown>[]): void {
56+
export function registerDefaultConfigurations (defaultConfigurations: IConfigurationDefaults['overrides'][]): void {
4257
configurationRegistry.registerDefaultConfigurations(defaultConfigurations.map(overrides => ({ overrides })))
4358
}

src/extensions/autofold.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
import * as monaco from 'monaco-editor'
2+
import { FoldingController, setCollapseStateForMatchingLines } from 'vscode/monaco'
23

34
export default function setup (editor: monaco.editor.IStandaloneCodeEditor): void {
45
editor.addAction({
56
id: 'editor.foldAllAutofoldRegions',
67
label: 'Fold all autofold regions',
78
run: async (editor: monaco.editor.ICodeEditor) => {
8-
const foldingController = monaco.extra.FoldingController.get(editor)
9-
const foldingModelPromise: Promise<monaco.extra.FoldingModel> | null = foldingController?.getFoldingModel()
9+
const foldingController = FoldingController.get(editor)
10+
const foldingModelPromise = foldingController?.getFoldingModel()
1011
if (foldingModelPromise != null) {
1112
return foldingModelPromise.then(foldingModel => {
1213
const editorModel = editor.getModel()
13-
if (editorModel == null) {
14+
if (editorModel == null || foldingModel == null) {
1415
return
1516
}
1617
const regExp = /.*autofold.*/
17-
monaco.extra.setCollapseStateForMatchingLines(foldingModel, regExp, true)
18+
setCollapseStateForMatchingLines(foldingModel, regExp, true)
1819
})
1920
}
2021
}

src/features/extensionConfigurations.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import * as monaco from 'monaco-editor'
1+
import { configurationRegistry } from 'vscode/service-override/configuration'
22
import extensionConfigurationLoader from '../languages/extensions/extensionConfigurationLoader'
33

4-
const configurationRegistry = monaco.extra.Registry.as<monaco.extra.IConfigurationRegistry>(monaco.extra.ConfigurationExtensions.Configuration)
5-
64
export async function loadConfigurationForExtension (extensionId: string): Promise<void> {
75
const loader = extensionConfigurationLoader[extensionId]
86
if (loader == null) {

src/features/htmlContribution.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import * as monaco from 'monaco-editor'
22
import 'monaco-editor/esm/vs/language/html/monaco.contribution'
3-
import { getConfiguration, onConfigurationChanged, registerConfigurations } from '../configuration'
3+
import { ConfigurationScope } from 'vscode/service-override/configuration'
4+
import { DisposableStore } from 'vscode/monaco'
5+
import { StandaloneServices, ICodeEditorService } from 'vscode/services'
46
import { registerWorkerLoader } from '../worker'
7+
import { getConfiguration, onConfigurationChanged, registerConfigurations } from '../configuration'
58

69
const workerLoader = async () => (await import(/* webpackChunkName: "MonacoHtmlWorker" */'monaco-editor/esm/vs/language/html/html.worker?worker')).default
710
registerWorkerLoader('html', workerLoader)
@@ -21,7 +24,7 @@ registerConfigurations([{
2124
properties: {
2225
'html.autoClosingTags': {
2326
type: 'boolean',
24-
scope: monaco.extra.ConfigurationScope.RESOURCE,
27+
scope: ConfigurationScope.RESOURCE,
2528
default: true,
2629
description: 'Enable/disable autoclosing of HTML tags.'
2730
}
@@ -41,7 +44,7 @@ setTimeout(() => {
4144
})
4245

4346
function autoCloseHtmlTags (editor: monaco.editor.ICodeEditor): monaco.IDisposable {
44-
const disposableStore = new monaco.DisposableStore()
47+
const disposableStore = new DisposableStore()
4548

4649
let timeout: number | undefined
4750
disposableStore.add({
@@ -107,7 +110,7 @@ function autoCloseHtmlTags (editor: monaco.editor.ICodeEditor): monaco.IDisposab
107110

108111
setTimeout(() => {
109112
// In a timeout so the service can be overriden
110-
const codeEditors = monaco.extra.StandaloneServices.get(monaco.extra.ICodeEditorService).listCodeEditors()
113+
const codeEditors = StandaloneServices.get(ICodeEditorService).listCodeEditors()
111114
for (const editor of codeEditors) {
112115
autoCloseHtmlTags(editor)
113116
}

src/features/jsonContribution.ts

Lines changed: 6 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,21 @@
11
import 'monaco-editor/esm/vs/language/json/monaco.contribution'
22
import * as monaco from 'monaco-editor'
3+
import { getJsonSchemas, onDidChangeJsonSchema } from 'vscode/monaco'
34
import { registerWorkerLoader } from '../worker'
45

5-
const registry = monaco.extra.Registry.as<monaco.extra.IJSONContributionRegistry>(monaco.extra.JsonContributionExtensions.JSONContribution)
6-
7-
// Hack because the commands are filled by a code not run in monaco-editor
8-
{
9-
const allCommands = monaco.extra.CommandsRegistry.getCommands()
10-
const keybindingsCommandSchema = (registry.getSchemaContributions().schemas['vscode://schemas/keybindings']!.items as monaco.extra.IJSONSchema).properties!.command!.anyOf![0]!
11-
keybindingsCommandSchema.enum = Array.from(allCommands.keys())
12-
keybindingsCommandSchema.enumDescriptions = <string[]>Array.from(allCommands.values()).map(command => command.description?.description)
13-
}
14-
15-
const vimKeybindingsSchema = {
16-
type: 'object',
17-
properties: {
18-
before: {
19-
type: 'array',
20-
items: {
21-
type: 'string'
22-
}
23-
},
24-
after: {
25-
type: 'array',
26-
items: {
27-
type: 'string'
28-
}
29-
}
30-
}
31-
}
32-
336
function updateDiagnosticsOptions () {
347
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
358
comments: 'ignore',
369
validate: true,
37-
schemas: [{
38-
uri: 'vscode://schemas/settings/resourceLanguage',
39-
schema: registry.getSchemaContributions().schemas['vscode://schemas/settings/resourceLanguage']
40-
}, {
41-
uri: 'vscode://schemas/keybindings',
42-
fileMatch: ['file:///keybindings.json'],
43-
schema: registry.getSchemaContributions().schemas['vscode://schemas/keybindings']
44-
},
45-
{
46-
uri: 'vscode://schemas/settings/user',
47-
fileMatch: ['file:///settings.json'],
48-
schema: {
49-
properties: {
50-
...monaco.extra.allSettings.properties,
51-
'vim.normalModeKeyBindings': {
52-
type: 'array',
53-
description: 'Remapped keys in Normal mode.',
54-
items: vimKeybindingsSchema
55-
},
56-
'vim.insertModeKeyBindings': {
57-
type: 'array',
58-
description: 'Remapped keys in Insert mode.',
59-
items: vimKeybindingsSchema
60-
},
61-
'vim.visualModeKeyBindings': {
62-
type: 'array',
63-
description: 'Remapped keys in Visual mode.',
64-
items: vimKeybindingsSchema
65-
}
66-
},
67-
patternProperties: monaco.extra.allSettings.patternProperties,
68-
additionalProperties: true,
69-
allowTrailingCommas: true,
70-
allowComments: true
71-
}
72-
}]
10+
schemas: getJsonSchemas({
11+
keybindings: ['file:///keybindings.json'],
12+
'settings/user': ['file:///settings.json']
13+
})
7314
})
7415
}
7516

7617
updateDiagnosticsOptions()
77-
registry.onDidChangeSchema(updateDiagnosticsOptions)
18+
onDidChangeJsonSchema(updateDiagnosticsOptions)
7819

7920
const workerLoader = async () => (await import(/* webpackChunkName: "MonacoJsonWorker" */'monaco-editor/esm/vs/language/json/json.worker?worker')).default
8021
registerWorkerLoader('json', workerLoader)

src/features/typescriptContribution.ts

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -47,42 +47,6 @@ monaco.languages.typescript.javascriptDefaults.addExtraLib(typescriptGlobal, 'no
4747
monaco.languages.typescript.javascriptDefaults.addExtraLib(typescriptConsole, 'node/console.d.ts')
4848
monaco.languages.typescript.javascriptDefaults.addExtraLib(typescriptProcess, 'node/process.d.ts')
4949

50-
const reactCompilerOptions: Parameters<typeof monaco.languages.typescript.typescriptDefaults.setCompilerOptions>[0] = {
51-
...compilerOptions,
52-
jsx: monaco.languages.typescript.JsxEmit.React,
53-
esModuleInterop: true
54-
}
55-
56-
const typescriptReactDefaults = new monaco.languages.typescript.LanguageServiceDefaultsImpl(
57-
reactCompilerOptions,
58-
{ noSemanticValidation: false, noSyntaxValidation: false, onlyVisible: false },
59-
{},
60-
{}
61-
)
62-
63-
const javascriptReactDefaults = new monaco.languages.typescript.LanguageServiceDefaultsImpl(
64-
reactCompilerOptions,
65-
{ noSemanticValidation: true, noSyntaxValidation: false, onlyVisible: false },
66-
{},
67-
{}
68-
)
69-
7050
const workerLoader = async () => (await import(/* webpackChunkName: "MonacoTypescriptWorker" */'monaco-editor/esm/vs/language/typescript/ts.worker?worker')).default
7151
registerWorkerLoader('typescript', workerLoader)
7252
registerWorkerLoader('javascript', workerLoader)
73-
74-
// Add support for typescriptreact/javascriptreact which don't come out of the box
75-
registerWorkerLoader('typescriptreact', workerLoader)
76-
registerWorkerLoader('javascriptreact', workerLoader)
77-
78-
monaco.languages.onLanguage('typescriptreact', () => {
79-
void monaco.languages.typescript.setupMode(typescriptReactDefaults, 'typescriptreact')
80-
})
81-
monaco.languages.onLanguage('javascriptreact', () => {
82-
void monaco.languages.typescript.setupMode(javascriptReactDefaults, 'javascriptreact')
83-
})
84-
85-
export {
86-
typescriptReactDefaults,
87-
javascriptReactDefaults
88-
}

0 commit comments

Comments
 (0)