@codingame/monaco-vscode-api 1.68.3 → 1.68.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/dist/api.amd.js +7 -2
- package/dist/api.cjs +7 -2
- package/dist/api.js +7 -2
- package/package.json +15 -4
package/README.md
CHANGED
|
@@ -42,3 +42,26 @@ import * as vscode from 'vscode'
|
|
|
42
42
|
const range = new new vscode.Range(...)
|
|
43
43
|
vscode.languages.registerCompletionItemProvider(...)
|
|
44
44
|
```
|
|
45
|
+
|
|
46
|
+
### History
|
|
47
|
+
|
|
48
|
+
This project was mainly created to make the implementation of [monaco-languageclient](https://github.com/TypeFox/monaco-languageclient) more robust and maintainable.
|
|
49
|
+
|
|
50
|
+
monaco-languageclient uses [vscode-languageclient](https://www.npmjs.com/package/vscode-languageclient) which was built to run inside a VSCode extension. VSCode extensions communicate with the editor via an [API](https://www.npmjs.com/package/@types/vscode) they can import into their code.
|
|
51
|
+
|
|
52
|
+
[The VSCode api](https://code.visualstudio.com/api/references/vscode-api) exports:
|
|
53
|
+
- Some functions to interact with the IDE ([language feature registrations](https://code.visualstudio.com/api/references/vscode-api#languages), [command execution](https://code.visualstudio.com/api/references/vscode-api#commands)...)
|
|
54
|
+
- A lot of utility classes (Range, Position...)
|
|
55
|
+
|
|
56
|
+
The first implementations of [monaco-languageclient](https://github.com/TypeFox/monaco-languageclient) were using a fake VSCode api implementation. The vscode-languageclient was hacked so the VSCode<->protocol object converters were mainly bypassed, so the fake VSCode api was receiving [Language Server Protocol](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/) objects. Then the objects were transformed using custom transformers into [Monaco](https://www.npmjs.com/package/monaco-editor) objects to communicate with the monaco api.
|
|
57
|
+
|
|
58
|
+
This approach has some disadvantages:
|
|
59
|
+
- There is a lot of code to transform LSP objects into Monaco objects
|
|
60
|
+
- It's hard to follow the updates of VSCode and the language server protocol
|
|
61
|
+
- It doesn't behave exactly the same as in VSCode
|
|
62
|
+
|
|
63
|
+
With this library, it would be possible to plug vscode-languageclient directly on top of monaco, monaco-languageclient still helps to do so by:
|
|
64
|
+
- Adding some tweaks to the VSCode LanguageClient (Removing unsupported features...)
|
|
65
|
+
- Providing a default implementations of the required fallback services (`vscode/services`)
|
|
66
|
+
- Providing some examples on how to build an app using it
|
|
67
|
+
- Adding some tools (DisposableCollection)
|
package/dist/api.amd.js
CHANGED
|
@@ -8767,7 +8767,9 @@ define(['exports', 'monaco-editor/esm/vs/base/common/errors.js', 'monaco-editor/
|
|
|
8767
8767
|
},
|
|
8768
8768
|
registerCodeLensProvider(documentSelector, provider) {
|
|
8769
8769
|
const adapter = new CodeLensAdapter(extHostDocuments, extHostCommands.converter, provider);
|
|
8770
|
-
|
|
8770
|
+
const onDidChangeCodeLenses = provider.onDidChangeCodeLenses;
|
|
8771
|
+
const monacoProvider = {
|
|
8772
|
+
onDidChange: onDidChangeCodeLenses != null ? listener => onDidChangeCodeLenses(() => listener(monacoProvider)) : undefined,
|
|
8771
8773
|
provideCodeLenses: async (model, token) => {
|
|
8772
8774
|
const listDto = await adapter.provideCodeLenses(model.uri, token);
|
|
8773
8775
|
if (listDto == null) {
|
|
@@ -8781,7 +8783,8 @@ define(['exports', 'monaco-editor/esm/vs/base/common/errors.js', 'monaco-editor/
|
|
|
8781
8783
|
resolveCodeLens: (_model, codeLens, token) => {
|
|
8782
8784
|
return adapter.resolveCodeLens(codeLens, token);
|
|
8783
8785
|
}
|
|
8784
|
-
}
|
|
8786
|
+
};
|
|
8787
|
+
return monaco__namespace.languages.registerCodeLensProvider(documentSelector, monacoProvider);
|
|
8785
8788
|
},
|
|
8786
8789
|
registerDefinitionProvider(documentSelector, provider) {
|
|
8787
8790
|
const adapter = new DefinitionAdapter(extHostDocuments, provider);
|
|
@@ -8996,6 +8999,7 @@ define(['exports', 'monaco-editor/esm/vs/base/common/errors.js', 'monaco-editor/
|
|
|
8996
8999
|
const adapter = new DocumentSemanticTokensAdapter(extHostDocuments, provider);
|
|
8997
9000
|
return monaco__namespace.languages.registerDocumentSemanticTokensProvider(documentSelector, {
|
|
8998
9001
|
getLegend: () => legend,
|
|
9002
|
+
onDidChange: provider.onDidChangeSemanticTokens,
|
|
8999
9003
|
provideDocumentSemanticTokens: async (model, lastResultId, token) => {
|
|
9000
9004
|
const nLastResultId = lastResultId != null ? parseInt(lastResultId, 10) : 0;
|
|
9001
9005
|
const encodedDto = await adapter.provideDocumentSemanticTokens(model.uri, nLastResultId, token);
|
|
@@ -9051,6 +9055,7 @@ define(['exports', 'monaco-editor/esm/vs/base/common/errors.js', 'monaco-editor/
|
|
|
9051
9055
|
const adapter = new InlayHintsAdapter(extHostDocuments, extHostCommands.converter, provider, extHostLogService, extensionDescription);
|
|
9052
9056
|
return monaco__namespace.languages.registerInlayHintsProvider(documentSelector, {
|
|
9053
9057
|
displayName: ExtHostLanguageFeatures._extLabel(extensionDescription),
|
|
9058
|
+
onDidChangeInlayHints: provider.onDidChangeInlayHints,
|
|
9054
9059
|
provideInlayHints: async (model, range, token) => {
|
|
9055
9060
|
const result = await adapter.provideInlayHints(model.uri, range, token);
|
|
9056
9061
|
if (result == null) {
|
package/dist/api.cjs
CHANGED
|
@@ -8810,7 +8810,9 @@ const workspace$2 = {
|
|
|
8810
8810
|
},
|
|
8811
8811
|
registerCodeLensProvider(documentSelector, provider) {
|
|
8812
8812
|
const adapter = new CodeLensAdapter(extHostDocuments, extHostCommands.converter, provider);
|
|
8813
|
-
|
|
8813
|
+
const onDidChangeCodeLenses = provider.onDidChangeCodeLenses;
|
|
8814
|
+
const monacoProvider = {
|
|
8815
|
+
onDidChange: onDidChangeCodeLenses != null ? listener => onDidChangeCodeLenses(() => listener(monacoProvider)) : undefined,
|
|
8814
8816
|
provideCodeLenses: async (model, token) => {
|
|
8815
8817
|
const listDto = await adapter.provideCodeLenses(model.uri, token);
|
|
8816
8818
|
if (listDto == null) {
|
|
@@ -8824,7 +8826,8 @@ const workspace$2 = {
|
|
|
8824
8826
|
resolveCodeLens: (_model, codeLens, token) => {
|
|
8825
8827
|
return adapter.resolveCodeLens(codeLens, token);
|
|
8826
8828
|
}
|
|
8827
|
-
}
|
|
8829
|
+
};
|
|
8830
|
+
return monaco__namespace.languages.registerCodeLensProvider(documentSelector, monacoProvider);
|
|
8828
8831
|
},
|
|
8829
8832
|
registerDefinitionProvider(documentSelector, provider) {
|
|
8830
8833
|
const adapter = new DefinitionAdapter(extHostDocuments, provider);
|
|
@@ -9039,6 +9042,7 @@ const workspace$2 = {
|
|
|
9039
9042
|
const adapter = new DocumentSemanticTokensAdapter(extHostDocuments, provider);
|
|
9040
9043
|
return monaco__namespace.languages.registerDocumentSemanticTokensProvider(documentSelector, {
|
|
9041
9044
|
getLegend: () => legend,
|
|
9045
|
+
onDidChange: provider.onDidChangeSemanticTokens,
|
|
9042
9046
|
provideDocumentSemanticTokens: async (model, lastResultId, token) => {
|
|
9043
9047
|
const nLastResultId = lastResultId != null ? parseInt(lastResultId, 10) : 0;
|
|
9044
9048
|
const encodedDto = await adapter.provideDocumentSemanticTokens(model.uri, nLastResultId, token);
|
|
@@ -9094,6 +9098,7 @@ const workspace$2 = {
|
|
|
9094
9098
|
const adapter = new InlayHintsAdapter(extHostDocuments, extHostCommands.converter, provider, extHostLogService, extensionDescription);
|
|
9095
9099
|
return monaco__namespace.languages.registerInlayHintsProvider(documentSelector, {
|
|
9096
9100
|
displayName: ExtHostLanguageFeatures._extLabel(extensionDescription),
|
|
9101
|
+
onDidChangeInlayHints: provider.onDidChangeInlayHints,
|
|
9097
9102
|
provideInlayHints: async (model, range, token) => {
|
|
9098
9103
|
const result = await adapter.provideInlayHints(model.uri, range, token);
|
|
9099
9104
|
if (result == null) {
|
package/dist/api.js
CHANGED
|
@@ -8788,7 +8788,9 @@ const workspace$2 = {
|
|
|
8788
8788
|
},
|
|
8789
8789
|
registerCodeLensProvider(documentSelector, provider) {
|
|
8790
8790
|
const adapter = new CodeLensAdapter(extHostDocuments, extHostCommands.converter, provider);
|
|
8791
|
-
|
|
8791
|
+
const onDidChangeCodeLenses = provider.onDidChangeCodeLenses;
|
|
8792
|
+
const monacoProvider = {
|
|
8793
|
+
onDidChange: onDidChangeCodeLenses != null ? listener => onDidChangeCodeLenses(() => listener(monacoProvider)) : undefined,
|
|
8792
8794
|
provideCodeLenses: async (model, token) => {
|
|
8793
8795
|
const listDto = await adapter.provideCodeLenses(model.uri, token);
|
|
8794
8796
|
if (listDto == null) {
|
|
@@ -8802,7 +8804,8 @@ const workspace$2 = {
|
|
|
8802
8804
|
resolveCodeLens: (_model, codeLens, token) => {
|
|
8803
8805
|
return adapter.resolveCodeLens(codeLens, token);
|
|
8804
8806
|
}
|
|
8805
|
-
}
|
|
8807
|
+
};
|
|
8808
|
+
return monaco.languages.registerCodeLensProvider(documentSelector, monacoProvider);
|
|
8806
8809
|
},
|
|
8807
8810
|
registerDefinitionProvider(documentSelector, provider) {
|
|
8808
8811
|
const adapter = new DefinitionAdapter(extHostDocuments, provider);
|
|
@@ -9017,6 +9020,7 @@ const workspace$2 = {
|
|
|
9017
9020
|
const adapter = new DocumentSemanticTokensAdapter(extHostDocuments, provider);
|
|
9018
9021
|
return monaco.languages.registerDocumentSemanticTokensProvider(documentSelector, {
|
|
9019
9022
|
getLegend: () => legend,
|
|
9023
|
+
onDidChange: provider.onDidChangeSemanticTokens,
|
|
9020
9024
|
provideDocumentSemanticTokens: async (model, lastResultId, token) => {
|
|
9021
9025
|
const nLastResultId = lastResultId != null ? parseInt(lastResultId, 10) : 0;
|
|
9022
9026
|
const encodedDto = await adapter.provideDocumentSemanticTokens(model.uri, nLastResultId, token);
|
|
@@ -9072,6 +9076,7 @@ const workspace$2 = {
|
|
|
9072
9076
|
const adapter = new InlayHintsAdapter(extHostDocuments, extHostCommands.converter, provider, extHostLogService, extensionDescription);
|
|
9073
9077
|
return monaco.languages.registerInlayHintsProvider(documentSelector, {
|
|
9074
9078
|
displayName: ExtHostLanguageFeatures._extLabel(extensionDescription),
|
|
9079
|
+
onDidChangeInlayHints: provider.onDidChangeInlayHints,
|
|
9075
9080
|
provideInlayHints: async (model, range, token) => {
|
|
9076
9081
|
const result = await adapter.provideInlayHints(model.uri, range, token);
|
|
9077
9082
|
if (result == null) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-api",
|
|
3
|
-
"version": "1.68.
|
|
3
|
+
"version": "1.68.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor",
|
|
6
6
|
"keywords": [],
|
|
@@ -53,9 +53,15 @@
|
|
|
53
53
|
"scripts": {
|
|
54
54
|
"build": "rm -rf dist/ && npm run lint && npm run compile && npm run generate-types",
|
|
55
55
|
"compile": "rollup --config rollup/rollup.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup.json`}'",
|
|
56
|
-
"preprepare": "./scripts/install-vscode",
|
|
56
|
+
"preprepare": "./scripts/install-vscode ${npm_package_config_vscode_version}",
|
|
57
57
|
"lint": "eslint --ext ts src",
|
|
58
|
-
"generate-types": "tsc --project tsconfig.types.json && rollup --config rollup/rollup.types.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup.json`}' && rm -rf ./dist/types"
|
|
58
|
+
"generate-types": "tsc --project tsconfig.types.json && rollup --config rollup/rollup.types.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup.json`}' && rm -rf ./dist/types",
|
|
59
|
+
"release": "node --loader ts-node/esm release.ts ${npm_package_config_vscode_version}"
|
|
60
|
+
},
|
|
61
|
+
"config": {
|
|
62
|
+
"vscode": {
|
|
63
|
+
"version": "1.68.0"
|
|
64
|
+
}
|
|
59
65
|
},
|
|
60
66
|
"devDependencies": {
|
|
61
67
|
"@babel/core": "^7.18.2",
|
|
@@ -65,9 +71,11 @@
|
|
|
65
71
|
"@babel/preset-typescript": "^7.17.12",
|
|
66
72
|
"@codingame/eslint-config": "^1.1.2",
|
|
67
73
|
"@codingame/tsconfig": "^1.0.5",
|
|
74
|
+
"@octokit/rest": "^18.12.0",
|
|
68
75
|
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
69
76
|
"@rollup/plugin-typescript": "^8.3.2",
|
|
70
77
|
"@types/babel__core": "^7.1.19",
|
|
78
|
+
"@types/semver": "^7.3.10",
|
|
71
79
|
"@types/vscode": "^1.68.0",
|
|
72
80
|
"@typescript-eslint/eslint-plugin": "^5.27.1",
|
|
73
81
|
"@typescript-eslint/parser": "^5.27.1",
|
|
@@ -81,7 +89,10 @@
|
|
|
81
89
|
"recast": "^0.21.1",
|
|
82
90
|
"rollup": "^2.75.6",
|
|
83
91
|
"rollup-plugin-dts": "^4.2.2",
|
|
84
|
-
"
|
|
92
|
+
"semver": "^7.3.7",
|
|
93
|
+
"ts-node": "^10.8.1",
|
|
94
|
+
"typescript": "^4.7.3",
|
|
95
|
+
"zx": "^7.0.0"
|
|
85
96
|
},
|
|
86
97
|
"dependencies": {
|
|
87
98
|
"monaco-editor": "^0.33.0"
|