Merge from vscode a5cf1da01d5db3d2557132be8d30f89c38019f6c (#8525)

* Merge from vscode a5cf1da01d5db3d2557132be8d30f89c38019f6c

* remove files we don't want

* fix hygiene

* update distro

* update distro

* fix hygiene

* fix strict nulls

* distro

* distro

* fix tests

* fix tests

* add another edit

* fix viewlet icon

* fix azure dialog

* fix some padding

* fix more padding issues
This commit is contained in:
Anthony Dresser
2019-12-04 19:28:22 -08:00
committed by GitHub
parent a8818ab0df
commit f5ce7fb2a5
1507 changed files with 42813 additions and 27370 deletions

View File

@@ -0,0 +1,57 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Event } from 'vs/base/common/event';
import { IDisposable } from 'vs/base/common/lifecycle';
interface TerminalDataBuffer extends IDisposable {
data: string[];
timeoutId: any;
}
export class TerminalDataBufferer implements IDisposable {
private readonly _terminalBufferMap = new Map<number, TerminalDataBuffer>();
dispose() {
for (const buffer of this._terminalBufferMap.values()) {
buffer.dispose();
}
}
startBuffering(id: number, event: Event<string>, callback: (id: number, data: string) => void, throttleBy: number = 5): IDisposable {
let disposable: IDisposable;
disposable = event((e: string) => {
let buffer = this._terminalBufferMap.get(id);
if (buffer) {
buffer.data.push(e);
return;
}
const timeoutId = setTimeout(() => {
this._terminalBufferMap.delete(id);
callback(id, buffer!.data.join(''));
}, throttleBy);
buffer = {
data: [e],
timeoutId: timeoutId,
dispose: () => {
clearTimeout(timeoutId);
this._terminalBufferMap.delete(id);
disposable.dispose();
}
};
this._terminalBufferMap.set(id, buffer);
});
return disposable;
}
stopBuffering(id: number) {
const buffer = this._terminalBufferMap.get(id);
if (buffer) {
buffer.dispose();
}
}
}