mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-28 08:04:00 +01:00
Merge branch 'main' into tyriar/a11y_contrib_cleanup__contrib_cleanup
This commit is contained in:
@@ -263,7 +263,7 @@ class SwcTranspiler {
|
||||
options = SwcTranspiler._swcrcAmd;
|
||||
}
|
||||
}
|
||||
else if (this._cmdLine.options.module === ts.ModuleKind.CommonJS) {
|
||||
else if (this._cmdLine.options.module === ts.ModuleKind.CommonJS || this._cmdLine.options.module === ts.ModuleKind.Node16) {
|
||||
options = SwcTranspiler._swcrcCommonJS;
|
||||
}
|
||||
this._jobs.push(swc.transform(tsSrc, options).then(output => {
|
||||
|
||||
@@ -337,7 +337,7 @@ export class SwcTranspiler implements ITranspiler {
|
||||
if (isAmd) {
|
||||
options = SwcTranspiler._swcrcAmd;
|
||||
}
|
||||
} else if (this._cmdLine.options.module === ts.ModuleKind.CommonJS) {
|
||||
} else if (this._cmdLine.options.module === ts.ModuleKind.CommonJS || this._cmdLine.options.module === ts.ModuleKind.Node16) {
|
||||
options = SwcTranspiler._swcrcCommonJS;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
"outDir": "./out",
|
||||
"lib": [
|
||||
"webworker"
|
||||
]
|
||||
],
|
||||
"module": "Node16",
|
||||
},
|
||||
"include": [
|
||||
"src/**/*",
|
||||
|
||||
+17
-17
@@ -9,7 +9,7 @@
|
||||
"version": "1.0.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"vscode-languageclient": "10.0.0-next.8",
|
||||
"vscode-languageclient": "^10.0.0-next.13",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -87,39 +87,39 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/vscode-jsonrpc": {
|
||||
"version": "9.0.0-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
|
||||
"integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ==",
|
||||
"version": "9.0.0-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.6.tgz",
|
||||
"integrity": "sha512-KCSvUNsFiVciG9iqjJKBZOd66CN3ZKohDlYRmoOi+pd8l15MFLZ8wRG4c+wuzePGba/8WcCG2TM+C/GVlvuaeA==",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageclient": {
|
||||
"version": "10.0.0-next.8",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.8.tgz",
|
||||
"integrity": "sha512-D9inIHgqKayO9Tv0MeLb3XIL76yTuWmKdHqcGZKzjtQrMGJgASJDYWTapu+yAjEpDp0gmVOaCYyIlLB86ncDoQ==",
|
||||
"version": "10.0.0-next.13",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.13.tgz",
|
||||
"integrity": "sha512-KLsOMJoYpkk36PIgcOjyZ4AekOfzp4kdWdRRbVKeVvSIrwrn/4RSZr0NlD6EvUBBJSsJW4WDrYY7Y3znkqa6+w==",
|
||||
"dependencies": {
|
||||
"minimatch": "^9.0.3",
|
||||
"semver": "^7.6.0",
|
||||
"vscode-languageserver-protocol": "3.17.6-next.6"
|
||||
"vscode-languageserver-protocol": "3.17.6-next.11"
|
||||
},
|
||||
"engines": {
|
||||
"vscode": "^1.89.0"
|
||||
"vscode": "^1.91.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-protocol": {
|
||||
"version": "3.17.6-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
|
||||
"integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
|
||||
"version": "3.17.6-next.11",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.11.tgz",
|
||||
"integrity": "sha512-GeJxEp1TiLsp79f8WG5n10wLViXfgFKb99hU9K8m7KDWM95/QFEqWkm79f9LVm54tUK74I91a9EeiQLCS/FABQ==",
|
||||
"dependencies": {
|
||||
"vscode-jsonrpc": "9.0.0-next.4",
|
||||
"vscode-languageserver-types": "3.17.6-next.4"
|
||||
"vscode-jsonrpc": "9.0.0-next.6",
|
||||
"vscode-languageserver-types": "3.17.6-next.5"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-types": {
|
||||
"version": "3.17.6-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
|
||||
"integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
|
||||
"version": "3.17.6-next.5",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.5.tgz",
|
||||
"integrity": "sha512-QFmf3Yl1tCgUQfA77N9Me/LXldJXkIVypQbty2rJ1DNHQkC+iwvm4Z2tXg9czSwlhvv0pD4pbF5mT7WhAglolw=="
|
||||
},
|
||||
"node_modules/vscode-uri": {
|
||||
"version": "3.0.8",
|
||||
|
||||
@@ -997,7 +997,7 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"vscode-languageclient": "10.0.0-next.8",
|
||||
"vscode-languageclient": "^10.0.0-next.13",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
+16
-16
@@ -11,7 +11,7 @@
|
||||
"dependencies": {
|
||||
"@vscode/l10n": "^0.0.18",
|
||||
"vscode-css-languageservice": "^6.3.1",
|
||||
"vscode-languageserver": "10.0.0-next.6",
|
||||
"vscode-languageserver": "^10.0.0-next.11",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -60,37 +60,37 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-jsonrpc": {
|
||||
"version": "9.0.0-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
|
||||
"integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ==",
|
||||
"version": "9.0.0-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.6.tgz",
|
||||
"integrity": "sha512-KCSvUNsFiVciG9iqjJKBZOd66CN3ZKohDlYRmoOi+pd8l15MFLZ8wRG4c+wuzePGba/8WcCG2TM+C/GVlvuaeA==",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver": {
|
||||
"version": "10.0.0-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.6.tgz",
|
||||
"integrity": "sha512-0Lh1nhQfSxo5Ob+ayYO1QTIsDix2/Lc72Urm1KZrCFxK5zIFYaEh3QFeM9oZih4Rzs0ZkQPXXnoHtpvs5GT+Zw==",
|
||||
"version": "10.0.0-next.11",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.11.tgz",
|
||||
"integrity": "sha512-cmobSrVDYhlh/t02vz/bV8nNpds8mus5HnILULae2iAvOjoaJPnTAp0jJWoYdUqTpIVzT9JV6JMKqLEvdqpeqg==",
|
||||
"dependencies": {
|
||||
"vscode-languageserver-protocol": "3.17.6-next.6"
|
||||
"vscode-languageserver-protocol": "3.17.6-next.11"
|
||||
},
|
||||
"bin": {
|
||||
"installServerIntoExtension": "bin/installServerIntoExtension"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-protocol": {
|
||||
"version": "3.17.6-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
|
||||
"integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
|
||||
"version": "3.17.6-next.11",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.11.tgz",
|
||||
"integrity": "sha512-GeJxEp1TiLsp79f8WG5n10wLViXfgFKb99hU9K8m7KDWM95/QFEqWkm79f9LVm54tUK74I91a9EeiQLCS/FABQ==",
|
||||
"dependencies": {
|
||||
"vscode-jsonrpc": "9.0.0-next.4",
|
||||
"vscode-languageserver-types": "3.17.6-next.4"
|
||||
"vscode-jsonrpc": "9.0.0-next.6",
|
||||
"vscode-languageserver-types": "3.17.6-next.5"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
|
||||
"version": "3.17.6-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
|
||||
"integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
|
||||
"version": "3.17.6-next.5",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.5.tgz",
|
||||
"integrity": "sha512-QFmf3Yl1tCgUQfA77N9Me/LXldJXkIVypQbty2rJ1DNHQkC+iwvm4Z2tXg9czSwlhvv0pD4pbF5mT7WhAglolw=="
|
||||
},
|
||||
"node_modules/vscode-languageserver-textdocument": {
|
||||
"version": "1.0.12",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"dependencies": {
|
||||
"@vscode/l10n": "^0.0.18",
|
||||
"vscode-css-languageservice": "^6.3.1",
|
||||
"vscode-languageserver": "10.0.0-next.6",
|
||||
"vscode-languageserver": "^10.0.0-next.11",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -22,7 +22,7 @@ const messageHandler = async (e: any) => {
|
||||
} else {
|
||||
l10nLog.push(`l10n: No bundle configured.`);
|
||||
}
|
||||
await import('./cssServerMain');
|
||||
await import('./cssServerMain.js');
|
||||
if (self.onmessage !== messageHandler) {
|
||||
pendingMessages.forEach(msg => self.onmessage?.(msg));
|
||||
pendingMessages.length = 0;
|
||||
|
||||
@@ -15,7 +15,7 @@ async function setupMain() {
|
||||
l10nLog.push(`l10n: Problems loading ${i10lLocation.toString()} : ${e}`);
|
||||
}
|
||||
}
|
||||
await import('./cssServerMain');
|
||||
await import('./cssServerMain.js');
|
||||
l10nLog.forEach(console.log);
|
||||
}
|
||||
setupMain();
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
"lib": [
|
||||
"ES2020",
|
||||
"WebWorker"
|
||||
]
|
||||
],
|
||||
"module": "Node16",
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -3,10 +3,12 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as path from 'path';
|
||||
import { TabInputText, Uri, window, workspace } from 'vscode';
|
||||
import { CancellationToken, DocumentLink, DocumentLinkProvider, l10n, Range, TabInputText, TextDocument, Uri, window, workspace } from 'vscode';
|
||||
import { IIPCHandler, IIPCServer } from './ipc/ipcServer';
|
||||
import { ITerminalEnvironmentProvider } from './terminal';
|
||||
import { EmptyDisposable, IDisposable } from './util';
|
||||
import { Model } from './model';
|
||||
import { Repository } from './repository';
|
||||
|
||||
interface GitEditorRequest {
|
||||
commitMessagePath?: string;
|
||||
@@ -63,3 +65,51 @@ export class GitEditor implements IIPCHandler, ITerminalEnvironmentProvider {
|
||||
this.disposable.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
export class GitEditorDocumentLinkProvider implements DocumentLinkProvider {
|
||||
private readonly _regex = /^#\s+(modified|new file|deleted|renamed|copied|type change):\s+(?<file1>.*?)(?:\s+->\s+(?<file2>.*))*$/gm;
|
||||
|
||||
constructor(private readonly _model: Model) { }
|
||||
|
||||
provideDocumentLinks(document: TextDocument, token: CancellationToken): DocumentLink[] {
|
||||
if (token.isCancellationRequested) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const repository = this._model.getRepository(document.uri);
|
||||
if (!repository) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const links: DocumentLink[] = [];
|
||||
for (const match of document.getText().matchAll(this._regex)) {
|
||||
if (!match.groups) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const { file1, file2 } = match.groups;
|
||||
|
||||
if (file1) {
|
||||
links.push(this._createDocumentLink(repository, document, match, file1));
|
||||
}
|
||||
if (file2) {
|
||||
links.push(this._createDocumentLink(repository, document, match, file2));
|
||||
}
|
||||
}
|
||||
|
||||
return links;
|
||||
}
|
||||
|
||||
private _createDocumentLink(repository: Repository, document: TextDocument, match: RegExpExecArray, file: string): DocumentLink {
|
||||
const startIndex = match[0].indexOf(file);
|
||||
const startPosition = document.positionAt(match.index + startIndex);
|
||||
const endPosition = document.positionAt(match.index + startIndex + file.length);
|
||||
|
||||
const documentLink = new DocumentLink(
|
||||
new Range(startPosition, endPosition),
|
||||
Uri.file(path.join(repository.root, file)));
|
||||
documentLink.tooltip = l10n.t('Open File');
|
||||
|
||||
return documentLink;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { env, ExtensionContext, workspace, window, Disposable, commands, Uri, version as vscodeVersion, WorkspaceFolder, LogOutputChannel, l10n, LogLevel } from 'vscode';
|
||||
import { env, ExtensionContext, workspace, window, Disposable, commands, Uri, version as vscodeVersion, WorkspaceFolder, LogOutputChannel, l10n, LogLevel, languages } from 'vscode';
|
||||
import { findGit, Git, IGit } from './git';
|
||||
import { Model } from './model';
|
||||
import { CommandCenter } from './commands';
|
||||
@@ -22,7 +22,7 @@ import { GitTimelineProvider } from './timelineProvider';
|
||||
import { registerAPICommands } from './api/api1';
|
||||
import { TerminalEnvironmentManager, TerminalShellExecutionManager } from './terminal';
|
||||
import { createIPCServer, IPCServer } from './ipc/ipcServer';
|
||||
import { GitEditor } from './gitEditor';
|
||||
import { GitEditor, GitEditorDocumentLinkProvider } from './gitEditor';
|
||||
import { GitPostCommitCommandsProvider } from './postCommitCommands';
|
||||
import { GitEditSessionIdentityProvider } from './editSessionIdentityProvider';
|
||||
import { GitCommitInputBoxCodeActionsProvider, GitCommitInputBoxDiagnosticsManager } from './diagnostics';
|
||||
@@ -126,6 +126,9 @@ async function createModel(context: ExtensionContext, logger: LogOutputChannel,
|
||||
const codeActionsProvider = new GitCommitInputBoxCodeActionsProvider(diagnosticsManager);
|
||||
disposables.push(codeActionsProvider);
|
||||
|
||||
const gitEditorDocumentLinkProvider = languages.registerDocumentLinkProvider('git-commit', new GitEditorDocumentLinkProvider(model));
|
||||
disposables.push(gitEditorDocumentLinkProvider);
|
||||
|
||||
checkGitVersion(info);
|
||||
commands.executeCommand('setContext', 'gitVersion2.35', git.compareGitVersionTo('2.35') >= 0);
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { DocumentSelector } from 'vscode-languageclient';
|
||||
import { Event, EventEmitter, extensions } from 'vscode';
|
||||
|
||||
/**
|
||||
@@ -22,7 +21,7 @@ interface LanguageParticipantContribution {
|
||||
|
||||
export interface LanguageParticipants {
|
||||
readonly onDidChange: Event<void>;
|
||||
readonly documentSelector: DocumentSelector;
|
||||
readonly documentSelector: string[];
|
||||
hasLanguage(languageId: string): boolean;
|
||||
useAutoInsert(languageId: string): boolean;
|
||||
dispose(): void;
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
"outDir": "./out",
|
||||
"lib": [
|
||||
"webworker"
|
||||
]
|
||||
],
|
||||
"module": "Node16",
|
||||
},
|
||||
"include": [
|
||||
"src/**/*",
|
||||
|
||||
+17
-17
@@ -10,7 +10,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vscode/extension-telemetry": "^0.9.0",
|
||||
"vscode-languageclient": "10.0.0-next.8",
|
||||
"vscode-languageclient": "^10.0.0-next.13",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -215,39 +215,39 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/vscode-jsonrpc": {
|
||||
"version": "9.0.0-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
|
||||
"integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ==",
|
||||
"version": "9.0.0-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.6.tgz",
|
||||
"integrity": "sha512-KCSvUNsFiVciG9iqjJKBZOd66CN3ZKohDlYRmoOi+pd8l15MFLZ8wRG4c+wuzePGba/8WcCG2TM+C/GVlvuaeA==",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageclient": {
|
||||
"version": "10.0.0-next.8",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.8.tgz",
|
||||
"integrity": "sha512-D9inIHgqKayO9Tv0MeLb3XIL76yTuWmKdHqcGZKzjtQrMGJgASJDYWTapu+yAjEpDp0gmVOaCYyIlLB86ncDoQ==",
|
||||
"version": "10.0.0-next.13",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.13.tgz",
|
||||
"integrity": "sha512-KLsOMJoYpkk36PIgcOjyZ4AekOfzp4kdWdRRbVKeVvSIrwrn/4RSZr0NlD6EvUBBJSsJW4WDrYY7Y3znkqa6+w==",
|
||||
"dependencies": {
|
||||
"minimatch": "^9.0.3",
|
||||
"semver": "^7.6.0",
|
||||
"vscode-languageserver-protocol": "3.17.6-next.6"
|
||||
"vscode-languageserver-protocol": "3.17.6-next.11"
|
||||
},
|
||||
"engines": {
|
||||
"vscode": "^1.89.0"
|
||||
"vscode": "^1.91.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-protocol": {
|
||||
"version": "3.17.6-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
|
||||
"integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
|
||||
"version": "3.17.6-next.11",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.11.tgz",
|
||||
"integrity": "sha512-GeJxEp1TiLsp79f8WG5n10wLViXfgFKb99hU9K8m7KDWM95/QFEqWkm79f9LVm54tUK74I91a9EeiQLCS/FABQ==",
|
||||
"dependencies": {
|
||||
"vscode-jsonrpc": "9.0.0-next.4",
|
||||
"vscode-languageserver-types": "3.17.6-next.4"
|
||||
"vscode-jsonrpc": "9.0.0-next.6",
|
||||
"vscode-languageserver-types": "3.17.6-next.5"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-types": {
|
||||
"version": "3.17.6-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
|
||||
"integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
|
||||
"version": "3.17.6-next.5",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.5.tgz",
|
||||
"integrity": "sha512-QFmf3Yl1tCgUQfA77N9Me/LXldJXkIVypQbty2rJ1DNHQkC+iwvm4Z2tXg9czSwlhvv0pD4pbF5mT7WhAglolw=="
|
||||
},
|
||||
"node_modules/vscode-uri": {
|
||||
"version": "3.0.8",
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@vscode/extension-telemetry": "^0.9.0",
|
||||
"vscode-languageclient": "10.0.0-next.8",
|
||||
"vscode-languageclient": "^10.0.0-next.13",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -15,6 +15,12 @@ const serverConfig = withBrowserDefaults({
|
||||
entry: {
|
||||
extension: './src/browser/htmlServerWorkerMain.ts',
|
||||
},
|
||||
resolve: {
|
||||
extensionAlias: {
|
||||
// this is needed to resolve dynamic imports that now require the .js extension
|
||||
'.js': ['.js', '.ts'],
|
||||
},
|
||||
},
|
||||
output: {
|
||||
filename: 'htmlServerMain.js',
|
||||
path: path.join(__dirname, 'dist', 'browser'),
|
||||
|
||||
+16
-16
@@ -12,7 +12,7 @@
|
||||
"@vscode/l10n": "^0.0.18",
|
||||
"vscode-css-languageservice": "^6.3.1",
|
||||
"vscode-html-languageservice": "^5.3.1",
|
||||
"vscode-languageserver": "10.0.0-next.6",
|
||||
"vscode-languageserver": "^10.0.0-next.11",
|
||||
"vscode-languageserver-textdocument": "^1.0.12",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
@@ -73,37 +73,37 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-jsonrpc": {
|
||||
"version": "9.0.0-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
|
||||
"integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ==",
|
||||
"version": "9.0.0-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.6.tgz",
|
||||
"integrity": "sha512-KCSvUNsFiVciG9iqjJKBZOd66CN3ZKohDlYRmoOi+pd8l15MFLZ8wRG4c+wuzePGba/8WcCG2TM+C/GVlvuaeA==",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver": {
|
||||
"version": "10.0.0-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.6.tgz",
|
||||
"integrity": "sha512-0Lh1nhQfSxo5Ob+ayYO1QTIsDix2/Lc72Urm1KZrCFxK5zIFYaEh3QFeM9oZih4Rzs0ZkQPXXnoHtpvs5GT+Zw==",
|
||||
"version": "10.0.0-next.11",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.11.tgz",
|
||||
"integrity": "sha512-cmobSrVDYhlh/t02vz/bV8nNpds8mus5HnILULae2iAvOjoaJPnTAp0jJWoYdUqTpIVzT9JV6JMKqLEvdqpeqg==",
|
||||
"dependencies": {
|
||||
"vscode-languageserver-protocol": "3.17.6-next.6"
|
||||
"vscode-languageserver-protocol": "3.17.6-next.11"
|
||||
},
|
||||
"bin": {
|
||||
"installServerIntoExtension": "bin/installServerIntoExtension"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-protocol": {
|
||||
"version": "3.17.6-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
|
||||
"integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
|
||||
"version": "3.17.6-next.11",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.11.tgz",
|
||||
"integrity": "sha512-GeJxEp1TiLsp79f8WG5n10wLViXfgFKb99hU9K8m7KDWM95/QFEqWkm79f9LVm54tUK74I91a9EeiQLCS/FABQ==",
|
||||
"dependencies": {
|
||||
"vscode-jsonrpc": "9.0.0-next.4",
|
||||
"vscode-languageserver-types": "3.17.6-next.4"
|
||||
"vscode-jsonrpc": "9.0.0-next.6",
|
||||
"vscode-languageserver-types": "3.17.6-next.5"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
|
||||
"version": "3.17.6-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
|
||||
"integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
|
||||
"version": "3.17.6-next.5",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.5.tgz",
|
||||
"integrity": "sha512-QFmf3Yl1tCgUQfA77N9Me/LXldJXkIVypQbty2rJ1DNHQkC+iwvm4Z2tXg9czSwlhvv0pD4pbF5mT7WhAglolw=="
|
||||
},
|
||||
"node_modules/vscode-languageserver-textdocument": {
|
||||
"version": "1.0.12",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"@vscode/l10n": "^0.0.18",
|
||||
"vscode-css-languageservice": "^6.3.1",
|
||||
"vscode-html-languageservice": "^5.3.1",
|
||||
"vscode-languageserver": "10.0.0-next.6",
|
||||
"vscode-languageserver": "^10.0.0-next.11",
|
||||
"vscode-languageserver-textdocument": "^1.0.12",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
|
||||
@@ -22,7 +22,7 @@ const messageHandler = async (e: any) => {
|
||||
} else {
|
||||
l10nLog.push(`l10n: No bundle configured.`);
|
||||
}
|
||||
await import('./htmlServerMain');
|
||||
await import('./htmlServerMain.js');
|
||||
if (self.onmessage !== messageHandler) {
|
||||
pendingMessages.forEach(msg => self.onmessage?.(msg));
|
||||
pendingMessages.length = 0;
|
||||
|
||||
@@ -22,7 +22,7 @@ function getLanguageServiceHost(scriptKind: ts.ScriptKind) {
|
||||
const compilerOptions: ts.CompilerOptions = { allowNonTsExtensions: true, allowJs: true, lib: ['lib.es2020.full.d.ts'], target: ts.ScriptTarget.Latest, moduleResolution: ts.ModuleResolutionKind.Classic, experimentalDecorators: false };
|
||||
|
||||
let currentTextDocument = TextDocument.create('init', 'javascript', 1, '');
|
||||
const jsLanguageService = import(/* webpackChunkName: "javascriptLibs" */ './javascriptLibs').then(libs => {
|
||||
const jsLanguageService = import(/* webpackChunkName: "javascriptLibs" */ './javascriptLibs.js').then(libs => {
|
||||
const host: ts.LanguageServiceHost = {
|
||||
getCompilationSettings: () => compilerOptions,
|
||||
getScriptFileNames: () => [currentTextDocument.uri, 'jquery'],
|
||||
|
||||
@@ -16,7 +16,7 @@ async function setupMain() {
|
||||
l10nLog.push(`l10n: Problems loading ${i10lLocation.toString()} : ${e}`);
|
||||
}
|
||||
}
|
||||
await import('./htmlServerMain');
|
||||
await import('./htmlServerMain.js');
|
||||
l10nLog.forEach(console.log);
|
||||
}
|
||||
setupMain();
|
||||
|
||||
@@ -24,8 +24,8 @@ suite('HTML Language Configuration', () => {
|
||||
value = value.substr(0, offset) + value.substring(offset + 1);
|
||||
|
||||
const actualRange = words.getWordAtText(value, offset, wordRegex);
|
||||
assert(actualRange.start <= offset);
|
||||
assert(actualRange.start + actualRange.length >= offset);
|
||||
assert.ok(actualRange.start <= offset);
|
||||
assert.ok(actualRange.start + actualRange.length >= offset);
|
||||
assert.strictEqual(value.substr(actualRange.start, actualRange.length), expected);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
"lib": [
|
||||
"ES2020",
|
||||
"WebWorker"
|
||||
]
|
||||
],
|
||||
"module": "Node16",
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { DocumentSelector } from 'vscode-languageclient';
|
||||
import { Event, EventEmitter, extensions } from 'vscode';
|
||||
|
||||
/**
|
||||
@@ -23,7 +22,7 @@ interface LanguageParticipantContribution {
|
||||
|
||||
export interface LanguageParticipants {
|
||||
readonly onDidChange: Event<void>;
|
||||
readonly documentSelector: DocumentSelector;
|
||||
readonly documentSelector: string[];
|
||||
hasLanguage(languageId: string): boolean;
|
||||
useComments(languageId: string): boolean;
|
||||
dispose(): void;
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
import {
|
||||
window, languages, Uri, Disposable, commands, QuickPickItem,
|
||||
extensions, workspace, Extension, WorkspaceFolder, QuickPickItemKind,
|
||||
ThemeIcon, TextDocument, LanguageStatusSeverity, l10n
|
||||
ThemeIcon, TextDocument, LanguageStatusSeverity, l10n, DocumentSelector
|
||||
} from 'vscode';
|
||||
import { JSONLanguageStatus, JSONSchemaSettings } from './jsonClient';
|
||||
import { DocumentSelector } from 'vscode-languageclient';
|
||||
|
||||
type ShowSchemasInput = {
|
||||
schemas: string[];
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
"outDir": "./out",
|
||||
"lib": [
|
||||
"webworker"
|
||||
]
|
||||
],
|
||||
"module": "Node16",
|
||||
},
|
||||
"include": [
|
||||
"src/**/*",
|
||||
|
||||
+17
-17
@@ -11,7 +11,7 @@
|
||||
"dependencies": {
|
||||
"@vscode/extension-telemetry": "^0.9.0",
|
||||
"request-light": "^0.8.0",
|
||||
"vscode-languageclient": "10.0.0-next.8"
|
||||
"vscode-languageclient": "^10.0.0-next.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "20.x"
|
||||
@@ -220,39 +220,39 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/vscode-jsonrpc": {
|
||||
"version": "9.0.0-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
|
||||
"integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ==",
|
||||
"version": "9.0.0-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.6.tgz",
|
||||
"integrity": "sha512-KCSvUNsFiVciG9iqjJKBZOd66CN3ZKohDlYRmoOi+pd8l15MFLZ8wRG4c+wuzePGba/8WcCG2TM+C/GVlvuaeA==",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageclient": {
|
||||
"version": "10.0.0-next.8",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.8.tgz",
|
||||
"integrity": "sha512-D9inIHgqKayO9Tv0MeLb3XIL76yTuWmKdHqcGZKzjtQrMGJgASJDYWTapu+yAjEpDp0gmVOaCYyIlLB86ncDoQ==",
|
||||
"version": "10.0.0-next.13",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.13.tgz",
|
||||
"integrity": "sha512-KLsOMJoYpkk36PIgcOjyZ4AekOfzp4kdWdRRbVKeVvSIrwrn/4RSZr0NlD6EvUBBJSsJW4WDrYY7Y3znkqa6+w==",
|
||||
"dependencies": {
|
||||
"minimatch": "^9.0.3",
|
||||
"semver": "^7.6.0",
|
||||
"vscode-languageserver-protocol": "3.17.6-next.6"
|
||||
"vscode-languageserver-protocol": "3.17.6-next.11"
|
||||
},
|
||||
"engines": {
|
||||
"vscode": "^1.89.0"
|
||||
"vscode": "^1.91.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-protocol": {
|
||||
"version": "3.17.6-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
|
||||
"integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
|
||||
"version": "3.17.6-next.11",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.11.tgz",
|
||||
"integrity": "sha512-GeJxEp1TiLsp79f8WG5n10wLViXfgFKb99hU9K8m7KDWM95/QFEqWkm79f9LVm54tUK74I91a9EeiQLCS/FABQ==",
|
||||
"dependencies": {
|
||||
"vscode-jsonrpc": "9.0.0-next.4",
|
||||
"vscode-languageserver-types": "3.17.6-next.4"
|
||||
"vscode-jsonrpc": "9.0.0-next.6",
|
||||
"vscode-languageserver-types": "3.17.6-next.5"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-types": {
|
||||
"version": "3.17.6-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
|
||||
"integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
|
||||
"version": "3.17.6-next.5",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.5.tgz",
|
||||
"integrity": "sha512-QFmf3Yl1tCgUQfA77N9Me/LXldJXkIVypQbty2rJ1DNHQkC+iwvm4Z2tXg9czSwlhvv0pD4pbF5mT7WhAglolw=="
|
||||
},
|
||||
"node_modules/yallist": {
|
||||
"version": "4.0.0",
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
"dependencies": {
|
||||
"@vscode/extension-telemetry": "^0.9.0",
|
||||
"request-light": "^0.8.0",
|
||||
"vscode-languageclient": "10.0.0-next.8"
|
||||
"vscode-languageclient": "^10.0.0-next.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "20.x"
|
||||
|
||||
+16
-16
@@ -13,7 +13,7 @@
|
||||
"jsonc-parser": "^3.3.1",
|
||||
"request-light": "^0.8.0",
|
||||
"vscode-json-languageservice": "^5.4.1",
|
||||
"vscode-languageserver": "10.0.0-next.6",
|
||||
"vscode-languageserver": "^10.0.0-next.11",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
"bin": {
|
||||
@@ -76,37 +76,37 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-jsonrpc": {
|
||||
"version": "9.0.0-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
|
||||
"integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ==",
|
||||
"version": "9.0.0-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.6.tgz",
|
||||
"integrity": "sha512-KCSvUNsFiVciG9iqjJKBZOd66CN3ZKohDlYRmoOi+pd8l15MFLZ8wRG4c+wuzePGba/8WcCG2TM+C/GVlvuaeA==",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver": {
|
||||
"version": "10.0.0-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.6.tgz",
|
||||
"integrity": "sha512-0Lh1nhQfSxo5Ob+ayYO1QTIsDix2/Lc72Urm1KZrCFxK5zIFYaEh3QFeM9oZih4Rzs0ZkQPXXnoHtpvs5GT+Zw==",
|
||||
"version": "10.0.0-next.11",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.11.tgz",
|
||||
"integrity": "sha512-cmobSrVDYhlh/t02vz/bV8nNpds8mus5HnILULae2iAvOjoaJPnTAp0jJWoYdUqTpIVzT9JV6JMKqLEvdqpeqg==",
|
||||
"dependencies": {
|
||||
"vscode-languageserver-protocol": "3.17.6-next.6"
|
||||
"vscode-languageserver-protocol": "3.17.6-next.11"
|
||||
},
|
||||
"bin": {
|
||||
"installServerIntoExtension": "bin/installServerIntoExtension"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-protocol": {
|
||||
"version": "3.17.6-next.6",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
|
||||
"integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
|
||||
"version": "3.17.6-next.11",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.11.tgz",
|
||||
"integrity": "sha512-GeJxEp1TiLsp79f8WG5n10wLViXfgFKb99hU9K8m7KDWM95/QFEqWkm79f9LVm54tUK74I91a9EeiQLCS/FABQ==",
|
||||
"dependencies": {
|
||||
"vscode-jsonrpc": "9.0.0-next.4",
|
||||
"vscode-languageserver-types": "3.17.6-next.4"
|
||||
"vscode-jsonrpc": "9.0.0-next.6",
|
||||
"vscode-languageserver-types": "3.17.6-next.5"
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
|
||||
"version": "3.17.6-next.4",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
|
||||
"integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
|
||||
"version": "3.17.6-next.5",
|
||||
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.5.tgz",
|
||||
"integrity": "sha512-QFmf3Yl1tCgUQfA77N9Me/LXldJXkIVypQbty2rJ1DNHQkC+iwvm4Z2tXg9czSwlhvv0pD4pbF5mT7WhAglolw=="
|
||||
},
|
||||
"node_modules/vscode-languageserver-textdocument": {
|
||||
"version": "1.0.12",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"jsonc-parser": "^3.3.1",
|
||||
"request-light": "^0.8.0",
|
||||
"vscode-json-languageservice": "^5.4.1",
|
||||
"vscode-languageserver": "10.0.0-next.6",
|
||||
"vscode-languageserver": "^10.0.0-next.11",
|
||||
"vscode-uri": "^3.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -22,7 +22,7 @@ const messageHandler = async (e: any) => {
|
||||
} else {
|
||||
l10nLog.push(`l10n: No bundle configured.`);
|
||||
}
|
||||
await import('./jsonServerMain');
|
||||
await import('./jsonServerMain.js');
|
||||
if (self.onmessage !== messageHandler) {
|
||||
pendingMessages.forEach(msg => self.onmessage?.(msg));
|
||||
pendingMessages.length = 0;
|
||||
|
||||
@@ -16,7 +16,7 @@ async function setupMain() {
|
||||
l10nLog.push(`l10n: Problems loading ${i10lLocation.toString()} : ${e}`);
|
||||
}
|
||||
}
|
||||
await import('./jsonServerMain');
|
||||
await import('./jsonServerMain.js');
|
||||
l10nLog.forEach(console.log);
|
||||
}
|
||||
setupMain();
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
"lib": [
|
||||
"ES2020",
|
||||
"WebWorker"
|
||||
]
|
||||
],
|
||||
"module": "Node16",
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -32,7 +32,11 @@ function withNodeDefaults(/**@type WebpackConfig & { context: string }*/extConfi
|
||||
resolve: {
|
||||
conditionNames: ['import', 'require', 'node-addons', 'node'],
|
||||
mainFields: ['module', 'main'],
|
||||
extensions: ['.ts', '.js'] // support ts-files and js-files
|
||||
extensions: ['.ts', '.js'], // support ts-files and js-files
|
||||
extensionAlias: {
|
||||
// this is needed to resolve dynamic imports that now require the .js extension
|
||||
'.js': ['.js', '.ts'],
|
||||
}
|
||||
},
|
||||
module: {
|
||||
rules: [{
|
||||
@@ -110,7 +114,11 @@ function withBrowserDefaults(/**@type WebpackConfig & { context: string }*/extCo
|
||||
'path': require.resolve('path-browserify'),
|
||||
'os': require.resolve('os-browserify'),
|
||||
'util': require.resolve('util')
|
||||
}
|
||||
},
|
||||
extensionAlias: {
|
||||
// this is needed to resolve dynamic imports that now require the .js extension
|
||||
'.js': ['.js', '.ts'],
|
||||
},
|
||||
},
|
||||
module: {
|
||||
rules: [{
|
||||
@@ -123,7 +131,7 @@ function withBrowserDefaults(/**@type WebpackConfig & { context: string }*/extCo
|
||||
loader: 'ts-loader',
|
||||
options: {
|
||||
...tsLoaderOptions,
|
||||
...(additionalOptions ? {} : { configFile: additionalOptions.configFile }),
|
||||
// ...(additionalOptions ? {} : { configFile: additionalOptions.configFile }),
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
Generated
+15
-5
@@ -150,7 +150,7 @@
|
||||
"source-map": "0.6.1",
|
||||
"source-map-support": "^0.3.2",
|
||||
"style-loader": "^3.3.2",
|
||||
"ts-loader": "^9.4.2",
|
||||
"ts-loader": "^9.5.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"tsec": "0.2.7",
|
||||
"tslib": "^2.6.3",
|
||||
@@ -17412,15 +17412,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ts-loader": {
|
||||
"version": "9.4.2",
|
||||
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz",
|
||||
"integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==",
|
||||
"version": "9.5.1",
|
||||
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz",
|
||||
"integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chalk": "^4.1.0",
|
||||
"enhanced-resolve": "^5.0.0",
|
||||
"micromatch": "^4.0.0",
|
||||
"semver": "^7.3.4"
|
||||
"semver": "^7.3.4",
|
||||
"source-map": "^0.7.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
@@ -17430,6 +17431,15 @@
|
||||
"webpack": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ts-loader/node_modules/source-map": {
|
||||
"version": "0.7.4",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
|
||||
"integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/ts-morph": {
|
||||
"version": "19.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-19.0.0.tgz",
|
||||
|
||||
+1
-1
@@ -208,7 +208,7 @@
|
||||
"source-map": "0.6.1",
|
||||
"source-map-support": "^0.3.2",
|
||||
"style-loader": "^3.3.2",
|
||||
"ts-loader": "^9.4.2",
|
||||
"ts-loader": "^9.5.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"tsec": "0.2.7",
|
||||
"tslib": "^2.6.3",
|
||||
|
||||
@@ -88,7 +88,7 @@ export class MainThreadTreeViews extends Disposable implements MainThreadTreeVie
|
||||
const dataProvider = this._dataProviders.get(treeViewId);
|
||||
if (viewer && dataProvider) {
|
||||
const itemsToRefresh = dataProvider.dataProvider.getItemsToRefresh(itemsToRefreshByHandle);
|
||||
return viewer.refresh(itemsToRefresh.length ? itemsToRefresh : undefined);
|
||||
return viewer.refresh(itemsToRefresh.items.length ? itemsToRefresh.items : undefined, itemsToRefresh.checkboxes.length ? itemsToRefresh.checkboxes : undefined);
|
||||
}
|
||||
return Promise.resolve();
|
||||
}
|
||||
@@ -287,22 +287,26 @@ class TreeViewDataProvider implements ITreeViewDataProvider {
|
||||
});
|
||||
}
|
||||
|
||||
getItemsToRefresh(itemsToRefreshByHandle: { [treeItemHandle: string]: ITreeItem }): ITreeItem[] {
|
||||
getItemsToRefresh(itemsToRefreshByHandle: { [treeItemHandle: string]: ITreeItem }): { items: ITreeItem[]; checkboxes: ITreeItem[] } {
|
||||
const itemsToRefresh: ITreeItem[] = [];
|
||||
const checkboxesToRefresh: ITreeItem[] = [];
|
||||
if (itemsToRefreshByHandle) {
|
||||
for (const treeItemHandle of Object.keys(itemsToRefreshByHandle)) {
|
||||
const currentTreeItem = this.getItem(treeItemHandle);
|
||||
for (const newTreeItemHandle of Object.keys(itemsToRefreshByHandle)) {
|
||||
const currentTreeItem = this.getItem(newTreeItemHandle);
|
||||
if (currentTreeItem) { // Refresh only if the item exists
|
||||
const treeItem = itemsToRefreshByHandle[treeItemHandle];
|
||||
const newTreeItem = itemsToRefreshByHandle[newTreeItemHandle];
|
||||
if (currentTreeItem.checkbox?.isChecked !== newTreeItem.checkbox?.isChecked) {
|
||||
checkboxesToRefresh.push(currentTreeItem);
|
||||
}
|
||||
// Update the current item with refreshed item
|
||||
this.updateTreeItem(currentTreeItem, treeItem);
|
||||
if (treeItemHandle === treeItem.handle) {
|
||||
this.updateTreeItem(currentTreeItem, newTreeItem);
|
||||
if (newTreeItemHandle === newTreeItem.handle) {
|
||||
itemsToRefresh.push(currentTreeItem);
|
||||
} else {
|
||||
// Update maps when handle is changed and refresh parent
|
||||
this.itemsMap.delete(treeItemHandle);
|
||||
this.itemsMap.delete(newTreeItemHandle);
|
||||
this.itemsMap.set(currentTreeItem.handle, currentTreeItem);
|
||||
const parent = treeItem.parentHandle ? this.itemsMap.get(treeItem.parentHandle) : null;
|
||||
const parent = newTreeItem.parentHandle ? this.itemsMap.get(newTreeItem.parentHandle) : null;
|
||||
if (parent) {
|
||||
itemsToRefresh.push(parent);
|
||||
}
|
||||
@@ -310,7 +314,7 @@ class TreeViewDataProvider implements ITreeViewDataProvider {
|
||||
}
|
||||
}
|
||||
}
|
||||
return itemsToRefresh;
|
||||
return { items: itemsToRefresh, checkboxes: checkboxesToRefresh };
|
||||
}
|
||||
|
||||
getItem(treeItemHandle: string): ITreeItem | undefined {
|
||||
|
||||
@@ -25,19 +25,15 @@ export class CheckboxStateHandler extends Disposable {
|
||||
}
|
||||
|
||||
export class TreeItemCheckbox extends Disposable {
|
||||
public toggle: Toggle | undefined;
|
||||
private checkboxContainer: HTMLDivElement;
|
||||
public isDisposed = false;
|
||||
private toggle: Toggle | undefined;
|
||||
private readonly checkboxContainer: HTMLDivElement;
|
||||
private hover: IManagedHover | undefined;
|
||||
|
||||
public static readonly checkboxClass = 'custom-view-tree-node-item-checkbox';
|
||||
|
||||
private readonly _onDidChangeState = new Emitter<boolean>();
|
||||
readonly onDidChangeState: Event<boolean> = this._onDidChangeState.event;
|
||||
|
||||
constructor(
|
||||
container: HTMLElement,
|
||||
private checkboxStateHandler: CheckboxStateHandler,
|
||||
private readonly checkboxStateHandler: CheckboxStateHandler,
|
||||
private readonly hoverDelegate: IHoverDelegate,
|
||||
private readonly hoverService: IHoverService
|
||||
) {
|
||||
|
||||
@@ -971,7 +971,11 @@ abstract class AbstractTreeView extends Disposable implements ITreeView {
|
||||
return 0;
|
||||
}
|
||||
|
||||
async refresh(elements?: readonly ITreeItem[]): Promise<void> {
|
||||
private updateCheckboxes(elements: readonly ITreeItem[]): ITreeItem[] {
|
||||
return setCascadingCheckboxUpdates(elements);
|
||||
}
|
||||
|
||||
async refresh(elements?: readonly ITreeItem[], checkboxes?: readonly ITreeItem[]): Promise<void> {
|
||||
if (this.dataProvider && this.tree) {
|
||||
if (this.refreshing) {
|
||||
await Event.toPromise(this._onDidCompleteRefresh.event);
|
||||
@@ -985,7 +989,8 @@ abstract class AbstractTreeView extends Disposable implements ITreeView {
|
||||
element.children = undefined; // reset children
|
||||
}
|
||||
if (this.isVisible) {
|
||||
return this.doRefresh(elements);
|
||||
const affectedElements = this.updateCheckboxes(checkboxes ?? []);
|
||||
return this.doRefresh(elements.concat(affectedElements));
|
||||
} else {
|
||||
if (this.elementsToRefresh.length) {
|
||||
const seen: Set<string> = new Set<string>();
|
||||
@@ -1383,8 +1388,7 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
|
||||
templateData.checkbox = checkbox;
|
||||
}
|
||||
templateData.checkbox.render(node);
|
||||
}
|
||||
else if (templateData.checkbox) {
|
||||
} else if (templateData.checkbox) {
|
||||
templateData.checkbox.dispose();
|
||||
templateData.checkbox = undefined;
|
||||
}
|
||||
@@ -1449,69 +1453,19 @@ class TreeRenderer extends Disposable implements ITreeRenderer<ITreeItem, FuzzyS
|
||||
}
|
||||
|
||||
private updateCheckboxes(items: ITreeItem[]) {
|
||||
const additionalItems: ITreeItem[] = [];
|
||||
let allItems: ITreeItem[] = [];
|
||||
|
||||
if (!this.manuallyManageCheckboxes()) {
|
||||
for (const item of items) {
|
||||
if (item.checkbox !== undefined) {
|
||||
|
||||
function checkChildren(currentItem: ITreeItem) {
|
||||
for (const child of (currentItem.children ?? [])) {
|
||||
if ((child.checkbox !== undefined) && (currentItem.checkbox !== undefined) && (child.checkbox.isChecked !== currentItem.checkbox.isChecked)) {
|
||||
child.checkbox.isChecked = currentItem.checkbox.isChecked;
|
||||
additionalItems.push(child);
|
||||
checkChildren(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
checkChildren(item);
|
||||
|
||||
const visitedParents: Set<ITreeItem> = new Set();
|
||||
function checkParents(currentItem: ITreeItem) {
|
||||
if (currentItem.parent && (currentItem.parent.checkbox !== undefined) && currentItem.parent.children) {
|
||||
if (visitedParents.has(currentItem.parent)) {
|
||||
return;
|
||||
} else {
|
||||
visitedParents.add(currentItem.parent);
|
||||
}
|
||||
|
||||
let someUnchecked = false;
|
||||
let someChecked = false;
|
||||
for (const child of currentItem.parent.children) {
|
||||
if (someUnchecked && someChecked) {
|
||||
break;
|
||||
}
|
||||
if (child.checkbox !== undefined) {
|
||||
if (child.checkbox.isChecked) {
|
||||
someChecked = true;
|
||||
} else {
|
||||
someUnchecked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (someChecked && !someUnchecked && (currentItem.parent.checkbox.isChecked !== true)) {
|
||||
currentItem.parent.checkbox.isChecked = true;
|
||||
additionalItems.push(currentItem.parent);
|
||||
checkParents(currentItem.parent);
|
||||
} else if (someUnchecked && (currentItem.parent.checkbox.isChecked !== false)) {
|
||||
currentItem.parent.checkbox.isChecked = false;
|
||||
additionalItems.push(currentItem.parent);
|
||||
checkParents(currentItem.parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
checkParents(item);
|
||||
}
|
||||
}
|
||||
allItems = setCascadingCheckboxUpdates(items);
|
||||
}
|
||||
items = items.concat(additionalItems);
|
||||
items.forEach(item => {
|
||||
|
||||
allItems.forEach(item => {
|
||||
const renderedItems = this._renderedElements.get(item.handle);
|
||||
if (renderedItems) {
|
||||
renderedItems.forEach(renderedItems => renderedItems.rendered.checkbox?.render(item));
|
||||
}
|
||||
});
|
||||
this._onDidChangeCheckboxState.fire(items);
|
||||
this._onDidChangeCheckboxState.fire(allItems);
|
||||
}
|
||||
|
||||
disposeElement(resource: ITreeNode<ITreeItem, FuzzyScore>, index: number, templateData: ITreeExplorerTemplateData): void {
|
||||
@@ -1995,3 +1949,61 @@ export class CustomTreeViewDragAndDrop implements ITreeDragAndDrop<ITreeItem> {
|
||||
|
||||
dispose(): void { }
|
||||
}
|
||||
|
||||
function setCascadingCheckboxUpdates(items: readonly ITreeItem[]) {
|
||||
const additionalItems: ITreeItem[] = [];
|
||||
|
||||
for (const item of items) {
|
||||
if (item.checkbox !== undefined) {
|
||||
|
||||
const checkChildren = (currentItem: ITreeItem) => {
|
||||
for (const child of (currentItem.children ?? [])) {
|
||||
if ((child.checkbox !== undefined) && (currentItem.checkbox !== undefined) && (child.checkbox.isChecked !== currentItem.checkbox.isChecked)) {
|
||||
child.checkbox.isChecked = currentItem.checkbox.isChecked;
|
||||
additionalItems.push(child);
|
||||
checkChildren(child);
|
||||
}
|
||||
}
|
||||
};
|
||||
checkChildren(item);
|
||||
|
||||
const visitedParents: Set<ITreeItem> = new Set();
|
||||
const checkParents = (currentItem: ITreeItem) => {
|
||||
if (currentItem.parent && (currentItem.parent.checkbox !== undefined) && currentItem.parent.children) {
|
||||
if (visitedParents.has(currentItem.parent)) {
|
||||
return;
|
||||
} else {
|
||||
visitedParents.add(currentItem.parent);
|
||||
}
|
||||
|
||||
let someUnchecked = false;
|
||||
let someChecked = false;
|
||||
for (const child of currentItem.parent.children) {
|
||||
if (someUnchecked && someChecked) {
|
||||
break;
|
||||
}
|
||||
if (child.checkbox !== undefined) {
|
||||
if (child.checkbox.isChecked) {
|
||||
someChecked = true;
|
||||
} else {
|
||||
someUnchecked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (someChecked && !someUnchecked && (currentItem.parent.checkbox.isChecked !== true)) {
|
||||
currentItem.parent.checkbox.isChecked = true;
|
||||
additionalItems.push(currentItem.parent);
|
||||
checkParents(currentItem.parent);
|
||||
} else if (someUnchecked && (currentItem.parent.checkbox.isChecked !== false)) {
|
||||
currentItem.parent.checkbox.isChecked = false;
|
||||
additionalItems.push(currentItem.parent);
|
||||
checkParents(currentItem.parent);
|
||||
}
|
||||
}
|
||||
};
|
||||
checkParents(item);
|
||||
}
|
||||
}
|
||||
|
||||
return items.concat(additionalItems);
|
||||
}
|
||||
|
||||
@@ -657,7 +657,8 @@ export interface ITreeView extends IDisposable {
|
||||
|
||||
readonly container: any | undefined;
|
||||
|
||||
refresh(treeItems?: readonly ITreeItem[]): Promise<void>;
|
||||
// checkboxesChanged is a subset of treeItems
|
||||
refresh(treeItems?: readonly ITreeItem[], checkboxesChanged?: readonly ITreeItem[]): Promise<void>;
|
||||
|
||||
setVisibility(visible: boolean): void;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scro
|
||||
import { AutoOpenBarrier, Barrier, Promises, disposableTimeout, timeout } from '../../../../base/common/async.js';
|
||||
import { Codicon } from '../../../../base/common/codicons.js';
|
||||
import { debounce } from '../../../../base/common/decorators.js';
|
||||
import { ErrorNoTelemetry, onUnexpectedError } from '../../../../base/common/errors.js';
|
||||
import { onUnexpectedError } from '../../../../base/common/errors.js';
|
||||
import { Emitter, Event } from '../../../../base/common/event.js';
|
||||
import { KeyCode } from '../../../../base/common/keyCodes.js';
|
||||
import { ISeparator, template } from '../../../../base/common/labels.js';
|
||||
@@ -133,7 +133,13 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
private readonly _processManager: ITerminalProcessManager;
|
||||
private readonly _contributions: Map<string, ITerminalContribution> = new Map();
|
||||
private readonly _resource: URI;
|
||||
private _xtermReadyPromise: Promise<XtermTerminal>;
|
||||
|
||||
/**
|
||||
* Resolves when xterm.js is ready, this will be undefined if the terminal instance is disposed
|
||||
* before xterm.js could be created.
|
||||
*/
|
||||
private _xtermReadyPromise: Promise<XtermTerminal | undefined>;
|
||||
|
||||
private _pressAnyKeyToCloseListener: IDisposable | undefined;
|
||||
private _instanceId: number;
|
||||
private _latestXtermWriteData: number = 0;
|
||||
@@ -347,7 +353,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
readonly onDidChangeVisibility = this._onDidChangeVisibility.event;
|
||||
|
||||
private readonly _onLineData = this._register(new Emitter<string>({
|
||||
onDidAddFirstListener: async () => (this.xterm ?? await this._xtermReadyPromise).raw.loadAddon(this._lineDataEventAddon!)
|
||||
onDidAddFirstListener: async () => (this.xterm ?? await this._xtermReadyPromise)?.raw.loadAddon(this._lineDataEventAddon!)
|
||||
}));
|
||||
readonly onLineData = this._onLineData.event;
|
||||
|
||||
@@ -584,7 +590,9 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
onUnexpectedError(err);
|
||||
}
|
||||
this._xtermReadyPromise.then(xterm => {
|
||||
contribution.xtermReady?.(xterm);
|
||||
if (xterm) {
|
||||
contribution.xtermReady?.(xterm);
|
||||
}
|
||||
});
|
||||
this._register(this.onDisposed(() => {
|
||||
contribution.dispose();
|
||||
@@ -620,6 +628,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
if (this.shellLaunchConfig?.attachPersistentProcess?.color) {
|
||||
return this.shellLaunchConfig.attachPersistentProcess.color;
|
||||
}
|
||||
|
||||
if (this._processManager.processState >= ProcessState.Launching) {
|
||||
return undefined;
|
||||
}
|
||||
@@ -729,10 +738,10 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
/**
|
||||
* Create xterm.js instance and attach data listeners.
|
||||
*/
|
||||
protected async _createXterm(): Promise<XtermTerminal> {
|
||||
protected async _createXterm(): Promise<XtermTerminal | undefined> {
|
||||
const Terminal = await TerminalInstance.getXtermConstructor(this._keybindingService, this._contextKeyService);
|
||||
if (this.isDisposed) {
|
||||
throw new ErrorNoTelemetry('Terminal disposed of during xterm.js creation');
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const disableShellIntegrationReporting = (this.shellLaunchConfig.executable === undefined || this.shellType === undefined) || !shellIntegrationSupportedShellTypes.includes(this.shellType);
|
||||
@@ -905,7 +914,12 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
|
||||
this.xterm?.refresh();
|
||||
|
||||
setTimeout(() => this._initDragAndDrop(container));
|
||||
setTimeout(() => {
|
||||
if (this._store.isDisposed) {
|
||||
return;
|
||||
}
|
||||
this._initDragAndDrop(container);
|
||||
}, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -937,7 +951,11 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
// Fire xtermOpen on all contributions
|
||||
for (const contribution of this._contributions.values()) {
|
||||
if (!this.xterm) {
|
||||
this._xtermReadyPromise.then(xterm => contribution.xtermOpen?.(xterm));
|
||||
this._xtermReadyPromise.then(xterm => {
|
||||
if (xterm) {
|
||||
contribution.xtermOpen?.(xterm);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
contribution.xtermOpen?.(this.xterm);
|
||||
}
|
||||
@@ -1342,7 +1360,9 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
// _xtermReadyPromise is ready constructed since this is called from the ctor
|
||||
setTimeout(() => {
|
||||
this._xtermReadyPromise.then(xterm => {
|
||||
this._messageTitleDisposable.value = xterm.raw.onTitleChange(e => this._onTitleChange(e));
|
||||
if (xterm) {
|
||||
this._messageTitleDisposable.value = xterm.raw.onTitleChange(e => this._onTitleChange(e));
|
||||
}
|
||||
});
|
||||
});
|
||||
this._setTitle(this._shellLaunchConfig.executable, TitleEventSource.Process);
|
||||
@@ -1535,6 +1555,9 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
const waitOnExit = this.waitOnExit;
|
||||
if (waitOnExit && this._processManager.processState !== ProcessState.KilledByUser) {
|
||||
this._xtermReadyPromise.then(xterm => {
|
||||
if (!xterm) {
|
||||
return;
|
||||
}
|
||||
if (exitMessage) {
|
||||
xterm.raw.write(formatMessageForTerminal(exitMessage));
|
||||
}
|
||||
@@ -1795,7 +1818,11 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
|
||||
// Layout all contributions
|
||||
for (const contribution of this._contributions.values()) {
|
||||
if (!this.xterm) {
|
||||
this._xtermReadyPromise.then(xterm => contribution.layout?.(xterm, dimension));
|
||||
this._xtermReadyPromise.then(xterm => {
|
||||
if (xterm) {
|
||||
contribution.layout?.(xterm, dimension);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
contribution.layout?.(this.xterm, dimension);
|
||||
}
|
||||
|
||||
@@ -266,6 +266,9 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach
|
||||
this._shellIntegrationAddon = new ShellIntegrationAddon(options.shellIntegrationNonce ?? '', options.disableShellIntegrationReporting, this._telemetryService, this._logService);
|
||||
this.raw.loadAddon(this._shellIntegrationAddon);
|
||||
this._xtermAddonLoader.importAddon('clipboard').then(ClipboardAddon => {
|
||||
if (this._store.isDisposed) {
|
||||
return;
|
||||
}
|
||||
this._clipboardAddon = this._instantiationService.createInstance(ClipboardAddon, undefined, {
|
||||
async readText(type: ClipboardSelectionType): Promise<string> {
|
||||
return _clipboardService.readText(type === 'p' ? 'selection' : 'clipboard');
|
||||
@@ -470,6 +473,9 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach
|
||||
private _getSearchAddon(): Promise<SearchAddonType> {
|
||||
if (!this._searchAddonPromise) {
|
||||
this._searchAddonPromise = this._xtermAddonLoader.importAddon('search').then((AddonCtor) => {
|
||||
if (this._store.isDisposed) {
|
||||
return Promise.reject('Could not create search addon, terminal is disposed');
|
||||
}
|
||||
this._searchAddon = new AddonCtor({ highlightLimit: XtermTerminalConstants.SearchHighlightLimit });
|
||||
this.raw.loadAddon(this._searchAddon);
|
||||
this._searchAddon.onDidChangeResults((results: { resultIndex: number; resultCount: number }) => {
|
||||
|
||||
Reference in New Issue
Block a user