mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 23:13:02 +01:00
commit
f53b683f37
14 changed files with 111 additions and 253 deletions
|
|
@ -3,5 +3,6 @@
|
||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
"trailingComma": "none",
|
"trailingComma": "none",
|
||||||
"semi": true,
|
"semi": true,
|
||||||
"useTabs": true
|
"useTabs": true,
|
||||||
|
"printWidth": 100
|
||||||
}
|
}
|
||||||
|
|
|
||||||
6
monaco.d.ts
vendored
6
monaco.d.ts
vendored
|
|
@ -18,11 +18,7 @@ declare namespace monaco.languages.html {
|
||||||
readonly indentHandlebars: boolean;
|
readonly indentHandlebars: boolean;
|
||||||
readonly endWithNewline: boolean;
|
readonly endWithNewline: boolean;
|
||||||
readonly extraLiners: string;
|
readonly extraLiners: string;
|
||||||
readonly wrapAttributes:
|
readonly wrapAttributes: 'auto' | 'force' | 'force-aligned' | 'force-expand-multiline';
|
||||||
| 'auto'
|
|
||||||
| 'force'
|
|
||||||
| 'force-aligned'
|
|
||||||
| 'force-expand-multiline';
|
|
||||||
}
|
}
|
||||||
export interface CompletionConfiguration {
|
export interface CompletionConfiguration {
|
||||||
[provider: string]: boolean;
|
[provider: string]: boolean;
|
||||||
|
|
|
||||||
52
package-lock.json
generated
52
package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "monaco-html",
|
"name": "monaco-html",
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
@ -411,15 +411,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"monaco-editor-core": {
|
"monaco-editor-core": {
|
||||||
"version": "0.20.0",
|
"version": "0.21.0",
|
||||||
"resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.21.0.tgz",
|
||||||
"integrity": "sha512-4mdmfEejTvRZzrEIn70jqqNl3g15vnkRdTkJ8uMK4jiljntlwhiSc5vknZOLt1QM8za16C3tDrSl2mTL9ma2Sg==",
|
"integrity": "sha512-buBxOxwexlb7pdQrIHjj7OGmtVmEe735NN7M8GbhN03eYAKQmaeIAs1AyneOOHvbvh1Ntm7PoHH8f196gd2p6w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"monaco-languages": {
|
"monaco-languages": {
|
||||||
"version": "1.10.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/monaco-languages/-/monaco-languages-1.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/monaco-languages/-/monaco-languages-2.1.0.tgz",
|
||||||
"integrity": "sha512-ARAws17Xh0K4WsZYkJY6CqHn9EYdYN8CjzK6w/jgXIwU0owzCdUWxzu+FNJ/LeDLcKxL/YK3phcwGFj9IqX2yw==",
|
"integrity": "sha512-c2afUp3lbUCrvEdVrH8EThQYbj5tb2FpvXFnFN3gOJScDlFknWb5nbaxiaVqY9CSIqzJVZpNc5HXpP5FWOuS3g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"monaco-plugin-helpers": {
|
"monaco-plugin-helpers": {
|
||||||
|
|
@ -573,15 +573,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz",
|
||||||
"integrity": "sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw==",
|
"integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"pretty-quick": {
|
"pretty-quick": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.0.2.tgz",
|
||||||
"integrity": "sha512-oIXlGQUcUxt3XpoNfQECEWvH1Q9PtKfelF2pdp6UvC1CSQ5QcB7gUYKu0kuJGlm3LMBZzJaO/vbRkxA61pWlcg==",
|
"integrity": "sha512-4rWOs/Ifdkg7G/YX7Xbco4jZkuXPx445KdhuMI6REnl3nXRDb9+zysb29c76R59jsJzcnkcpAaGi8D/RjAVfSQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "^3.0.0",
|
"chalk": "^3.0.0",
|
||||||
|
|
@ -697,9 +697,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"terser": {
|
"terser": {
|
||||||
"version": "5.3.0",
|
"version": "5.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.3.2.tgz",
|
||||||
"integrity": "sha512-XTT3D3AwxC54KywJijmY2mxZ8nJiEjBHVYzq8l9OaYuRFWeQNBwvipuzzYEP4e+/AVcd1hqG/CqgsdIRyT45Fg==",
|
"integrity": "sha512-H67sydwBz5jCUA32ZRL319ULu+Su1cAoZnnc+lXnenGRYWyLE3Scgkt8mNoAsMx0h5kdo758zdoS0LG9rYZXDQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"commander": "^2.20.0",
|
"commander": "^2.20.0",
|
||||||
|
|
@ -708,20 +708,20 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz",
|
||||||
"integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==",
|
"integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"vscode-html-languageservice": {
|
"vscode-html-languageservice": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-3.1.3.tgz",
|
||||||
"integrity": "sha512-ixdcyb2xBmwNTuMitT6vNbnvHCnATim1ZZC/CxiUtzKImQjuXAT5Px53x/7+zUqGU9RlfkEwHN//slWcCBMdMw==",
|
"integrity": "sha512-ViGIfK7D3E99dFXprTenz20M8xzb0+fsAMPSPpz5JrHyBU7hdx+0cc/angDqdSygYMOm8vkbTviXwPtg6P3hhg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"vscode-languageserver-textdocument": "^1.0.1",
|
"vscode-languageserver-textdocument": "^1.0.1",
|
||||||
"vscode-languageserver-types": "3.16.0-next.2",
|
"vscode-languageserver-types": "3.16.0-next.2",
|
||||||
"vscode-nls": "^4.1.2",
|
"vscode-nls": "^5.0.0",
|
||||||
"vscode-uri": "^2.1.2"
|
"vscode-uri": "^2.1.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
@ -746,9 +746,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"vscode-nls": {
|
"vscode-nls": {
|
||||||
"version": "4.1.2",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz",
|
||||||
"integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==",
|
"integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"vscode-uri": {
|
"vscode-uri": {
|
||||||
|
|
|
||||||
16
package.json
16
package.json
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "monaco-html",
|
"name": "monaco-html",
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"description": "HTML plugin for the Monaco Editor",
|
"description": "HTML plugin for the Monaco Editor",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"compile": "mrmdir ./out && tsc -p ./src/tsconfig.json && tsc -p ./src/tsconfig.esm.json && node ./scripts/dts && prettier --write ./monaco.d.ts",
|
"compile": "mrmdir ./out && tsc -p ./src/tsconfig.json && tsc -p ./src/tsconfig.esm.json && node ./scripts/dts && prettier --write ./monaco.d.ts",
|
||||||
|
|
@ -23,15 +23,15 @@
|
||||||
"typings": "./release/esm/monaco.contribution.d.ts",
|
"typings": "./release/esm/monaco.contribution.d.ts",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"husky": "^4.3.0",
|
"husky": "^4.3.0",
|
||||||
"monaco-editor-core": "0.20.0",
|
"monaco-editor-core": "0.21.0",
|
||||||
"monaco-languages": "^1.10.0",
|
"monaco-languages": "^2.1.0",
|
||||||
"monaco-plugin-helpers": "^1.0.3",
|
"monaco-plugin-helpers": "^1.0.3",
|
||||||
"prettier": "^2.1.1",
|
"prettier": "^2.1.2",
|
||||||
"pretty-quick": "^3.0.0",
|
"pretty-quick": "^3.0.2",
|
||||||
"requirejs": "^2.3.6",
|
"requirejs": "^2.3.6",
|
||||||
"typescript": "^4.0.2",
|
"typescript": "^4.0.3",
|
||||||
"terser": "^5.3.0",
|
"terser": "^5.3.2",
|
||||||
"vscode-html-languageservice": "3.1.2",
|
"vscode-html-languageservice": "3.1.3",
|
||||||
"vscode-languageserver-types": "3.15.1",
|
"vscode-languageserver-types": "3.15.1",
|
||||||
"vscode-languageserver-textdocument": "^1.0.1"
|
"vscode-languageserver-textdocument": "^1.0.1"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -40,26 +40,17 @@ function bundleOne(moduleId, exclude) {
|
||||||
packages: [
|
packages: [
|
||||||
{
|
{
|
||||||
name: 'vscode-html-languageservice',
|
name: 'vscode-html-languageservice',
|
||||||
location: path.join(
|
location: path.join(REPO_ROOT, 'node_modules/vscode-html-languageservice/lib/umd'),
|
||||||
REPO_ROOT,
|
|
||||||
'node_modules/vscode-html-languageservice/lib/umd'
|
|
||||||
),
|
|
||||||
main: 'htmlLanguageService'
|
main: 'htmlLanguageService'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'vscode-languageserver-types',
|
name: 'vscode-languageserver-types',
|
||||||
location: path.join(
|
location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-types/lib/umd'),
|
||||||
REPO_ROOT,
|
|
||||||
'node_modules/vscode-languageserver-types/lib/umd'
|
|
||||||
),
|
|
||||||
main: 'main'
|
main: 'main'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'vscode-languageserver-textdocument',
|
name: 'vscode-languageserver-textdocument',
|
||||||
location: path.join(
|
location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-textdocument/lib/umd'),
|
||||||
REPO_ROOT,
|
|
||||||
'node_modules/vscode-languageserver-textdocument/lib/umd'
|
|
||||||
),
|
|
||||||
main: 'main'
|
main: 'main'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -75,14 +66,8 @@ function bundleOne(moduleId, exclude) {
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
async function (buildResponse) {
|
async function (buildResponse) {
|
||||||
const devFilePath = path.join(
|
const devFilePath = path.join(REPO_ROOT, 'release/dev/' + moduleId + '.js');
|
||||||
REPO_ROOT,
|
const minFilePath = path.join(REPO_ROOT, 'release/min/' + moduleId + '.js');
|
||||||
'release/dev/' + moduleId + '.js'
|
|
||||||
);
|
|
||||||
const minFilePath = path.join(
|
|
||||||
REPO_ROOT,
|
|
||||||
'release/min/' + moduleId + '.js'
|
|
||||||
);
|
|
||||||
const fileContents = fs.readFileSync(devFilePath).toString();
|
const fileContents = fs.readFileSync(devFilePath).toString();
|
||||||
console.log();
|
console.log();
|
||||||
console.log(`Minifying ${devFilePath}...`);
|
console.log(`Minifying ${devFilePath}...`);
|
||||||
|
|
|
||||||
|
|
@ -33,11 +33,7 @@ function format(message: string, args: any[]): string {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function localize(
|
function localize(key: string | LocalizeInfo, message: string, ...args: any[]): string {
|
||||||
key: string | LocalizeInfo,
|
|
||||||
message: string,
|
|
||||||
...args: any[]
|
|
||||||
): string {
|
|
||||||
return format(message, args);
|
return format(message, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,7 @@ import { Uri, IDisposable, languages } from './fillers/monaco-editor-core';
|
||||||
export function setupMode1(defaults: LanguageServiceDefaults): void {
|
export function setupMode1(defaults: LanguageServiceDefaults): void {
|
||||||
const client = new WorkerManager(defaults);
|
const client = new WorkerManager(defaults);
|
||||||
|
|
||||||
const worker: languageFeatures.WorkerAccessor = (
|
const worker: languageFeatures.WorkerAccessor = (...uris: Uri[]): Promise<HTMLWorker> => {
|
||||||
...uris: Uri[]
|
|
||||||
): Promise<HTMLWorker> => {
|
|
||||||
return client.getLanguageServiceWorker(...uris);
|
return client.getLanguageServiceWorker(...uris);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -25,19 +23,13 @@ export function setupMode1(defaults: LanguageServiceDefaults): void {
|
||||||
languageId,
|
languageId,
|
||||||
new languageFeatures.CompletionAdapter(worker)
|
new languageFeatures.CompletionAdapter(worker)
|
||||||
);
|
);
|
||||||
languages.registerHoverProvider(
|
languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker));
|
||||||
languageId,
|
|
||||||
new languageFeatures.HoverAdapter(worker)
|
|
||||||
);
|
|
||||||
|
|
||||||
languages.registerDocumentHighlightProvider(
|
languages.registerDocumentHighlightProvider(
|
||||||
languageId,
|
languageId,
|
||||||
new languageFeatures.DocumentHighlightAdapter(worker)
|
new languageFeatures.DocumentHighlightAdapter(worker)
|
||||||
);
|
);
|
||||||
languages.registerLinkProvider(
|
languages.registerLinkProvider(languageId, new languageFeatures.DocumentLinkAdapter(worker));
|
||||||
languageId,
|
|
||||||
new languageFeatures.DocumentLinkAdapter(worker)
|
|
||||||
);
|
|
||||||
languages.registerFoldingRangeProvider(
|
languages.registerFoldingRangeProvider(
|
||||||
languageId,
|
languageId,
|
||||||
new languageFeatures.FoldingRangeAdapter(worker)
|
new languageFeatures.FoldingRangeAdapter(worker)
|
||||||
|
|
@ -50,10 +42,7 @@ export function setupMode1(defaults: LanguageServiceDefaults): void {
|
||||||
languageId,
|
languageId,
|
||||||
new languageFeatures.SelectionRangeAdapter(worker)
|
new languageFeatures.SelectionRangeAdapter(worker)
|
||||||
);
|
);
|
||||||
languages.registerRenameProvider(
|
languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker));
|
||||||
languageId,
|
|
||||||
new languageFeatures.RenameAdapter(worker)
|
|
||||||
);
|
|
||||||
|
|
||||||
// only html
|
// only html
|
||||||
if (languageId === 'html') {
|
if (languageId === 'html') {
|
||||||
|
|
@ -76,9 +65,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
||||||
const client = new WorkerManager(defaults);
|
const client = new WorkerManager(defaults);
|
||||||
disposables.push(client);
|
disposables.push(client);
|
||||||
|
|
||||||
const worker: languageFeatures.WorkerAccessor = (
|
const worker: languageFeatures.WorkerAccessor = (...uris: Uri[]): Promise<HTMLWorker> => {
|
||||||
...uris: Uri[]
|
|
||||||
): Promise<HTMLWorker> => {
|
|
||||||
return client.getLanguageServiceWorker(...uris);
|
return client.getLanguageServiceWorker(...uris);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -97,10 +84,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
||||||
}
|
}
|
||||||
if (modeConfiguration.hovers) {
|
if (modeConfiguration.hovers) {
|
||||||
providers.push(
|
providers.push(
|
||||||
languages.registerHoverProvider(
|
languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker))
|
||||||
languageId,
|
|
||||||
new languageFeatures.HoverAdapter(worker)
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (modeConfiguration.documentHighlights) {
|
if (modeConfiguration.documentHighlights) {
|
||||||
|
|
@ -113,10 +97,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
||||||
}
|
}
|
||||||
if (modeConfiguration.links) {
|
if (modeConfiguration.links) {
|
||||||
providers.push(
|
providers.push(
|
||||||
languages.registerLinkProvider(
|
languages.registerLinkProvider(languageId, new languageFeatures.DocumentLinkAdapter(worker))
|
||||||
languageId,
|
|
||||||
new languageFeatures.DocumentLinkAdapter(worker)
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (modeConfiguration.documentSymbols) {
|
if (modeConfiguration.documentSymbols) {
|
||||||
|
|
@ -129,10 +110,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
||||||
}
|
}
|
||||||
if (modeConfiguration.rename) {
|
if (modeConfiguration.rename) {
|
||||||
providers.push(
|
providers.push(
|
||||||
languages.registerRenameProvider(
|
languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker))
|
||||||
languageId,
|
|
||||||
new languageFeatures.RenameAdapter(worker)
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (modeConfiguration.foldingRanges) {
|
if (modeConfiguration.foldingRanges) {
|
||||||
|
|
@ -168,9 +146,7 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (modeConfiguration.diagnostics) {
|
if (modeConfiguration.diagnostics) {
|
||||||
providers.push(
|
providers.push(new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults));
|
||||||
new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -52,10 +52,7 @@ export class HTMLWorker {
|
||||||
);
|
);
|
||||||
return Promise.resolve(textEdits);
|
return Promise.resolve(textEdits);
|
||||||
}
|
}
|
||||||
async doHover(
|
async doHover(uri: string, position: htmlService.Position): Promise<htmlService.Hover> {
|
||||||
uri: string,
|
|
||||||
position: htmlService.Position
|
|
||||||
): Promise<htmlService.Hover> {
|
|
||||||
let document = this._getTextDocument(uri);
|
let document = this._getTextDocument(uri);
|
||||||
let htmlDocument = this._languageService.parseHTMLDocument(document);
|
let htmlDocument = this._languageService.parseHTMLDocument(document);
|
||||||
let hover = this._languageService.doHover(document, position, htmlDocument);
|
let hover = this._languageService.doHover(document, position, htmlDocument);
|
||||||
|
|
@ -67,11 +64,7 @@ export class HTMLWorker {
|
||||||
): Promise<htmlService.DocumentHighlight[]> {
|
): Promise<htmlService.DocumentHighlight[]> {
|
||||||
let document = this._getTextDocument(uri);
|
let document = this._getTextDocument(uri);
|
||||||
let htmlDocument = this._languageService.parseHTMLDocument(document);
|
let htmlDocument = this._languageService.parseHTMLDocument(document);
|
||||||
let highlights = this._languageService.findDocumentHighlights(
|
let highlights = this._languageService.findDocumentHighlights(document, position, htmlDocument);
|
||||||
document,
|
|
||||||
position,
|
|
||||||
htmlDocument
|
|
||||||
);
|
|
||||||
return Promise.resolve(highlights);
|
return Promise.resolve(highlights);
|
||||||
}
|
}
|
||||||
async findDocumentLinks(uri: string): Promise<htmlService.DocumentLink[]> {
|
async findDocumentLinks(uri: string): Promise<htmlService.DocumentLink[]> {
|
||||||
|
|
@ -79,15 +72,10 @@ export class HTMLWorker {
|
||||||
let links = this._languageService.findDocumentLinks(document, null);
|
let links = this._languageService.findDocumentLinks(document, null);
|
||||||
return Promise.resolve(links);
|
return Promise.resolve(links);
|
||||||
}
|
}
|
||||||
async findDocumentSymbols(
|
async findDocumentSymbols(uri: string): Promise<htmlService.SymbolInformation[]> {
|
||||||
uri: string
|
|
||||||
): Promise<htmlService.SymbolInformation[]> {
|
|
||||||
let document = this._getTextDocument(uri);
|
let document = this._getTextDocument(uri);
|
||||||
let htmlDocument = this._languageService.parseHTMLDocument(document);
|
let htmlDocument = this._languageService.parseHTMLDocument(document);
|
||||||
let symbols = this._languageService.findDocumentSymbols(
|
let symbols = this._languageService.findDocumentSymbols(document, htmlDocument);
|
||||||
document,
|
|
||||||
htmlDocument
|
|
||||||
);
|
|
||||||
return Promise.resolve(symbols);
|
return Promise.resolve(symbols);
|
||||||
}
|
}
|
||||||
async getFoldingRanges(
|
async getFoldingRanges(
|
||||||
|
|
@ -113,12 +101,7 @@ export class HTMLWorker {
|
||||||
): Promise<htmlService.WorkspaceEdit> {
|
): Promise<htmlService.WorkspaceEdit> {
|
||||||
let document = this._getTextDocument(uri);
|
let document = this._getTextDocument(uri);
|
||||||
let htmlDocument = this._languageService.parseHTMLDocument(document);
|
let htmlDocument = this._languageService.parseHTMLDocument(document);
|
||||||
let renames = this._languageService.doRename(
|
let renames = this._languageService.doRename(document, position, newName, htmlDocument);
|
||||||
document,
|
|
||||||
position,
|
|
||||||
newName,
|
|
||||||
htmlDocument
|
|
||||||
);
|
|
||||||
return Promise.resolve(renames);
|
return Promise.resolve(renames);
|
||||||
}
|
}
|
||||||
private _getTextDocument(uri: string): htmlService.TextDocument {
|
private _getTextDocument(uri: string): htmlService.TextDocument {
|
||||||
|
|
@ -142,9 +125,6 @@ export interface ICreateData {
|
||||||
languageSettings: Options;
|
languageSettings: Options;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function create(
|
export function create(ctx: worker.IWorkerContext, createData: ICreateData): HTMLWorker {
|
||||||
ctx: worker.IWorkerContext,
|
|
||||||
createData: ICreateData
|
|
||||||
): HTMLWorker {
|
|
||||||
return new HTMLWorker(ctx, createData);
|
return new HTMLWorker(ctx, createData);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -104,11 +104,7 @@ export class DiagnosticsAdapter {
|
||||||
.then((worker) => {
|
.then((worker) => {
|
||||||
return worker.doValidation(resource.toString()).then((diagnostics) => {
|
return worker.doValidation(resource.toString()).then((diagnostics) => {
|
||||||
const markers = diagnostics.map((d) => toDiagnostics(resource, d));
|
const markers = diagnostics.map((d) => toDiagnostics(resource, d));
|
||||||
editor.setModelMarkers(
|
editor.setModelMarkers(editor.getModel(resource), languageId, markers);
|
||||||
editor.getModel(resource),
|
|
||||||
languageId,
|
|
||||||
markers
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.then(undefined, (err) => {
|
.then(undefined, (err) => {
|
||||||
|
|
@ -132,12 +128,8 @@ function toSeverity(lsSeverity: number): MarkerSeverity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function toDiagnostics(
|
function toDiagnostics(resource: Uri, diag: htmlService.Diagnostic): editor.IMarkerData {
|
||||||
resource: Uri,
|
const code = typeof diag.code === 'number' ? String(diag.code) : <string>diag.code;
|
||||||
diag: htmlService.Diagnostic
|
|
||||||
): editor.IMarkerData {
|
|
||||||
const code =
|
|
||||||
typeof diag.code === 'number' ? String(diag.code) : <string>diag.code;
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
severity: toSeverity(diag.severity),
|
severity: toSeverity(diag.severity),
|
||||||
|
|
@ -182,9 +174,7 @@ function toRange(range: htmlService.Range): Range {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isInsertReplaceEdit(
|
function isInsertReplaceEdit(edit: TextEdit | InsertReplaceEdit): edit is InsertReplaceEdit {
|
||||||
edit: TextEdit | InsertReplaceEdit
|
|
||||||
): edit is InsertReplaceEdit {
|
|
||||||
return (
|
return (
|
||||||
typeof (<InsertReplaceEdit>edit).insert !== 'undefined' &&
|
typeof (<InsertReplaceEdit>edit).insert !== 'undefined' &&
|
||||||
typeof (<InsertReplaceEdit>edit).replace !== 'undefined'
|
typeof (<InsertReplaceEdit>edit).replace !== 'undefined'
|
||||||
|
|
@ -281,9 +271,7 @@ function fromCompletionItemKind(
|
||||||
return htmlService.CompletionItemKind.Property;
|
return htmlService.CompletionItemKind.Property;
|
||||||
}
|
}
|
||||||
|
|
||||||
function toTextEdit(
|
function toTextEdit(textEdit: htmlService.TextEdit): editor.ISingleEditOperation {
|
||||||
textEdit: htmlService.TextEdit
|
|
||||||
): editor.ISingleEditOperation {
|
|
||||||
if (!textEdit) {
|
if (!textEdit) {
|
||||||
return void 0;
|
return void 0;
|
||||||
}
|
}
|
||||||
|
|
@ -347,13 +335,10 @@ export class CompletionAdapter implements languages.CompletionItemProvider {
|
||||||
item.insertText = entry.textEdit.newText;
|
item.insertText = entry.textEdit.newText;
|
||||||
}
|
}
|
||||||
if (entry.additionalTextEdits) {
|
if (entry.additionalTextEdits) {
|
||||||
item.additionalTextEdits = entry.additionalTextEdits.map(
|
item.additionalTextEdits = entry.additionalTextEdits.map(toTextEdit);
|
||||||
toTextEdit
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (entry.insertTextFormat === htmlService.InsertTextFormat.Snippet) {
|
if (entry.insertTextFormat === htmlService.InsertTextFormat.Snippet) {
|
||||||
item.insertTextRules =
|
item.insertTextRules = languages.CompletionItemInsertTextRule.InsertAsSnippet;
|
||||||
languages.CompletionItemInsertTextRule.InsertAsSnippet;
|
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
|
|
@ -399,10 +384,7 @@ function toMarkdownString(
|
||||||
}
|
}
|
||||||
|
|
||||||
function toMarkedStringArray(
|
function toMarkedStringArray(
|
||||||
contents:
|
contents: htmlService.MarkupContent | htmlService.MarkedString | htmlService.MarkedString[]
|
||||||
| htmlService.MarkupContent
|
|
||||||
| htmlService.MarkedString
|
|
||||||
| htmlService.MarkedString[]
|
|
||||||
): IMarkdownString[] {
|
): IMarkdownString[] {
|
||||||
if (!contents) {
|
if (!contents) {
|
||||||
return void 0;
|
return void 0;
|
||||||
|
|
@ -441,9 +423,7 @@ export class HoverAdapter implements languages.HoverProvider {
|
||||||
|
|
||||||
// --- document highlights ------
|
// --- document highlights ------
|
||||||
|
|
||||||
function toHighlighKind(
|
function toHighlighKind(kind: htmlService.DocumentHighlightKind): languages.DocumentHighlightKind {
|
||||||
kind: htmlService.DocumentHighlightKind
|
|
||||||
): languages.DocumentHighlightKind {
|
|
||||||
const mKind = languages.DocumentHighlightKind;
|
const mKind = languages.DocumentHighlightKind;
|
||||||
|
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
|
|
@ -457,8 +437,7 @@ function toHighlighKind(
|
||||||
return mKind.Text;
|
return mKind.Text;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DocumentHighlightAdapter
|
export class DocumentHighlightAdapter implements languages.DocumentHighlightProvider {
|
||||||
implements languages.DocumentHighlightProvider {
|
|
||||||
constructor(private _worker: WorkerAccessor) {}
|
constructor(private _worker: WorkerAccessor) {}
|
||||||
|
|
||||||
public provideDocumentHighlights(
|
public provideDocumentHighlights(
|
||||||
|
|
@ -469,12 +448,7 @@ export class DocumentHighlightAdapter
|
||||||
const resource = model.uri;
|
const resource = model.uri;
|
||||||
|
|
||||||
return this._worker(resource)
|
return this._worker(resource)
|
||||||
.then((worker) =>
|
.then((worker) => worker.findDocumentHighlights(resource.toString(), fromPosition(position)))
|
||||||
worker.findDocumentHighlights(
|
|
||||||
resource.toString(),
|
|
||||||
fromPosition(position)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.then((items) => {
|
.then((items) => {
|
||||||
if (!items) {
|
if (!items) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -595,8 +569,7 @@ function fromFormattingOptions(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DocumentFormattingEditProvider
|
export class DocumentFormattingEditProvider implements languages.DocumentFormattingEditProvider {
|
||||||
implements languages.DocumentFormattingEditProvider {
|
|
||||||
constructor(private _worker: WorkerAccessor) {}
|
constructor(private _worker: WorkerAccessor) {}
|
||||||
|
|
||||||
public provideDocumentFormattingEdits(
|
public provideDocumentFormattingEdits(
|
||||||
|
|
@ -633,11 +606,7 @@ export class DocumentRangeFormattingEditProvider
|
||||||
|
|
||||||
return this._worker(resource).then((worker) => {
|
return this._worker(resource).then((worker) => {
|
||||||
return worker
|
return worker
|
||||||
.format(
|
.format(resource.toString(), fromRange(range), fromFormattingOptions(options))
|
||||||
resource.toString(),
|
|
||||||
fromRange(range),
|
|
||||||
fromFormattingOptions(options)
|
|
||||||
)
|
|
||||||
.then((edits) => {
|
.then((edits) => {
|
||||||
if (!edits || edits.length === 0) {
|
if (!edits || edits.length === 0) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -661,11 +630,7 @@ export class RenameAdapter implements languages.RenameProvider {
|
||||||
|
|
||||||
return this._worker(resource)
|
return this._worker(resource)
|
||||||
.then((worker) => {
|
.then((worker) => {
|
||||||
return worker.doRename(
|
return worker.doRename(resource.toString(), fromPosition(position), newName);
|
||||||
resource.toString(),
|
|
||||||
fromPosition(position),
|
|
||||||
newName
|
|
||||||
);
|
|
||||||
})
|
})
|
||||||
.then((edit) => {
|
.then((edit) => {
|
||||||
return toWorkspaceEdit(edit);
|
return toWorkspaceEdit(edit);
|
||||||
|
|
@ -673,9 +638,7 @@ export class RenameAdapter implements languages.RenameProvider {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function toWorkspaceEdit(
|
function toWorkspaceEdit(edit: htmlService.WorkspaceEdit): languages.WorkspaceEdit {
|
||||||
edit: htmlService.WorkspaceEdit
|
|
||||||
): languages.WorkspaceEdit {
|
|
||||||
if (!edit || !edit.changes) {
|
if (!edit || !edit.changes) {
|
||||||
return void 0;
|
return void 0;
|
||||||
}
|
}
|
||||||
|
|
@ -719,9 +682,7 @@ export class FoldingRangeAdapter implements languages.FoldingRangeProvider {
|
||||||
end: range.endLine + 1
|
end: range.endLine + 1
|
||||||
};
|
};
|
||||||
if (typeof range.kind !== 'undefined') {
|
if (typeof range.kind !== 'undefined') {
|
||||||
result.kind = toFoldingRangeKind(
|
result.kind = toFoldingRangeKind(<htmlService.FoldingRangeKind>range.kind);
|
||||||
<htmlService.FoldingRangeKind>range.kind
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
|
|
@ -729,9 +690,7 @@ export class FoldingRangeAdapter implements languages.FoldingRangeProvider {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function toFoldingRangeKind(
|
function toFoldingRangeKind(kind: htmlService.FoldingRangeKind): languages.FoldingRangeKind {
|
||||||
kind: htmlService.FoldingRangeKind
|
|
||||||
): languages.FoldingRangeKind {
|
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
case htmlService.FoldingRangeKind.Comment:
|
case htmlService.FoldingRangeKind.Comment:
|
||||||
return languages.FoldingRangeKind.Comment;
|
return languages.FoldingRangeKind.Comment;
|
||||||
|
|
@ -753,12 +712,7 @@ export class SelectionRangeAdapter implements languages.SelectionRangeProvider {
|
||||||
const resource = model.uri;
|
const resource = model.uri;
|
||||||
|
|
||||||
return this._worker(resource)
|
return this._worker(resource)
|
||||||
.then((worker) =>
|
.then((worker) => worker.getSelectionRanges(resource.toString(), positions.map(fromPosition)))
|
||||||
worker.getSelectionRanges(
|
|
||||||
resource.toString(),
|
|
||||||
positions.map(fromPosition)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.then((selectionRanges) => {
|
.then((selectionRanges) => {
|
||||||
if (!selectionRanges) {
|
if (!selectionRanges) {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -18,11 +18,7 @@ export interface HTMLFormatConfiguration {
|
||||||
readonly indentHandlebars: boolean;
|
readonly indentHandlebars: boolean;
|
||||||
readonly endWithNewline: boolean;
|
readonly endWithNewline: boolean;
|
||||||
readonly extraLiners: string;
|
readonly extraLiners: string;
|
||||||
readonly wrapAttributes:
|
readonly wrapAttributes: 'auto' | 'force' | 'force-aligned' | 'force-expand-multiline';
|
||||||
| 'auto'
|
|
||||||
| 'force'
|
|
||||||
| 'force-aligned'
|
|
||||||
| 'force-expand-multiline';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CompletionConfiguration {
|
export interface CompletionConfiguration {
|
||||||
|
|
@ -118,11 +114,7 @@ class LanguageServiceDefaultsImpl implements LanguageServiceDefaults {
|
||||||
private _modeConfiguration: ModeConfiguration;
|
private _modeConfiguration: ModeConfiguration;
|
||||||
private _languageId: string;
|
private _languageId: string;
|
||||||
|
|
||||||
constructor(
|
constructor(languageId: string, options: Options, modeConfiguration: ModeConfiguration) {
|
||||||
languageId: string,
|
|
||||||
options: Options,
|
|
||||||
modeConfiguration: ModeConfiguration
|
|
||||||
) {
|
|
||||||
this._languageId = languageId;
|
this._languageId = languageId;
|
||||||
this.setOptions(options);
|
this.setOptions(options);
|
||||||
this.setModeConfiguration(modeConfiguration);
|
this.setModeConfiguration(modeConfiguration);
|
||||||
|
|
@ -186,9 +178,7 @@ const razorOptionsDefault: Required<Options> = {
|
||||||
suggest: { html5: true, razor: true }
|
suggest: { html5: true, razor: true }
|
||||||
};
|
};
|
||||||
|
|
||||||
function getConfigurationDefault(
|
function getConfigurationDefault(languageId: string): Required<ModeConfiguration> {
|
||||||
languageId: string
|
|
||||||
): Required<ModeConfiguration> {
|
|
||||||
return {
|
return {
|
||||||
completionItems: true,
|
completionItems: true,
|
||||||
hovers: true,
|
hovers: true,
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,6 @@
|
||||||
"outDir": "../out/esm",
|
"outDir": "../out/esm",
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"target": "es5",
|
"target": "es5",
|
||||||
"lib": [
|
"lib": ["dom", "es5", "es2015.collection", "es2015.promise", "es2015.iterable"]
|
||||||
"dom",
|
|
||||||
"es5",
|
|
||||||
"es2015.collection",
|
|
||||||
"es2015.promise",
|
|
||||||
"es2015.iterable"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,6 @@
|
||||||
"outDir": "../out/amd",
|
"outDir": "../out/amd",
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"target": "es5",
|
"target": "es5",
|
||||||
"lib": [
|
"lib": ["dom", "es5", "es2015.collection", "es2015.promise", "es2015.iterable"]
|
||||||
"dom",
|
|
||||||
"es5",
|
|
||||||
"es2015.collection",
|
|
||||||
"es2015.promise",
|
|
||||||
"es2015.iterable"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,7 @@ export class WorkerManager {
|
||||||
this._worker = null;
|
this._worker = null;
|
||||||
this._idleCheckInterval = setInterval(() => this._checkIfIdle(), 30 * 1000);
|
this._idleCheckInterval = setInterval(() => this._checkIfIdle(), 30 * 1000);
|
||||||
this._lastUsedTime = 0;
|
this._lastUsedTime = 0;
|
||||||
this._configChangeListener = this._defaults.onDidChange(() =>
|
this._configChangeListener = this._defaults.onDidChange(() => this._stopWorker());
|
||||||
this._stopWorker()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private _stopWorker(): void {
|
private _stopWorker(): void {
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h2>Monaco Editor HTML test page</h2>
|
<h2>Monaco Editor HTML test page</h2>
|
||||||
<div
|
<div id="container" style="width: 800px; height: 600px; border: 1px solid grey"></div>
|
||||||
id="container"
|
|
||||||
style="width: 800px; height: 600px; border: 1px solid grey"
|
|
||||||
></div>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// Loading basic-languages to get the html language definition
|
// Loading basic-languages to get the html language definition
|
||||||
|
|
@ -44,37 +41,34 @@
|
||||||
'vs/basic-languages/monaco.contribution',
|
'vs/basic-languages/monaco.contribution',
|
||||||
'vs/language/html/monaco.contribution'
|
'vs/language/html/monaco.contribution'
|
||||||
], function () {
|
], function () {
|
||||||
var editor = monaco.editor.create(
|
var editor = monaco.editor.create(document.getElementById('container'), {
|
||||||
document.getElementById('container'),
|
value: [
|
||||||
{
|
'<!DOCTYPE HTML>',
|
||||||
value: [
|
'<!--',
|
||||||
'<!DOCTYPE HTML>',
|
' Comments are overrated',
|
||||||
'<!--',
|
'-->',
|
||||||
' Comments are overrated',
|
'<html>',
|
||||||
'-->',
|
'<head>',
|
||||||
'<html>',
|
' <title>HTML Sample</title>',
|
||||||
'<head>',
|
' <meta http-equiv="X-UA-Compatible" content="IE=edge">',
|
||||||
' <title>HTML Sample</title>',
|
' <style type="text/css">',
|
||||||
' <meta http-equiv="X-UA-Compatible" content="IE=edge">',
|
' h1 {',
|
||||||
' <style type="text/css">',
|
' color: #CCA3A3;',
|
||||||
' h1 {',
|
' }',
|
||||||
' color: #CCA3A3;',
|
' </style>',
|
||||||
' }',
|
' <script type="text/javascript">',
|
||||||
' </style>',
|
' window.alert("I am a sample...");',
|
||||||
' <script type="text/javascript">',
|
' var x = 3;',
|
||||||
' window.alert("I am a sample...");',
|
' </' + 'script>',
|
||||||
' var x = 3;',
|
'</head>',
|
||||||
' </' + 'script>',
|
'<body>',
|
||||||
'</head>',
|
' <h1>Heading No.1</h1>',
|
||||||
'<body>',
|
' <input disabled type="button" value="Click me" />',
|
||||||
' <h1>Heading No.1</h1>',
|
'</body>',
|
||||||
' <input disabled type="button" value="Click me" />',
|
'</html>'
|
||||||
'</body>',
|
].join('\n'),
|
||||||
'</html>'
|
language: 'html'
|
||||||
].join('\n'),
|
});
|
||||||
language: 'html'
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue