public dispose(): void { this._modelOptionsListener.dispose(); this._configChangeListener.dispose(); this.model._removeMarker(this._selStartMarker); this.model._removeMarker(this._selEndMarker); this.bracketDecorations = this.model.deltaDecorations(this.bracketDecorations, [], this.editorId); }
public dispose(): void { this._isDisposed = true; if (this.handleAccumulatedModelEventsTimeout !== -1) { clearTimeout(this.handleAccumulatedModelEventsTimeout); this.handleAccumulatedModelEventsTimeout = -1; } if (this._renderAnimationFrame !== null) { this._renderAnimationFrame.dispose(); this._renderAnimationFrame = null; } this.accumulatedModelEvents = []; this.eventDispatcher.removeEventHandler(this); this.outgoingEvents.dispose(); this.listenersToRemove = dispose(this.listenersToRemove); this.listenersToDispose = dispose(this.listenersToDispose); this.keyboardHandler.dispose(); this.pointerHandler.dispose(); this.viewLines.dispose(); // Destroy view parts for (let i = 0, len = this.viewParts.length; i < len; i++) { this.viewParts[i].dispose(); } this.viewParts = []; this.layoutProvider.dispose(); }
return new Promise<string>((resolve, reject) => { let listener: IDisposable | null = null; let timeout: TimeoutTimer | null = null; const execute = () => { if (listener) { listener.dispose(); listener = null; } if (timeout) { timeout.dispose(); timeout = null; } const tokenizationSupport = TokenizationRegistry.get(language!); if (tokenizationSupport) { _colorize(lines, tabSize, tokenizationSupport).then(resolve, reject); return; } resolve(_fakeColorize(lines, tabSize)); }; // wait 500ms for mode to load, then give up timeout = new TimeoutTimer(); timeout.cancelAndSet(execute, 500); listener = TokenizationRegistry.onDidChange((e) => { if (e.changedLanguages.indexOf(language!) >= 0) { execute(); } }); });
return TPromise.join([TPromise.timeout(20)].concat(fixes)).then(_ => { reg.dispose(); oracle.dispose(); // assert marker assert.deepEqual(range, { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 6 }); });
private _leaveChordMode(): void { if (this._currentChordStatusMessage) { this._currentChordStatusMessage.dispose(); this._currentChordStatusMessage = null; } this._currentChordChecker.cancel(); this._currentChord = null; }
export function debounceEvent<I, O>(event: Event<I>, merger: (last: O, event: I) => O, delay: number = 100, leading = false): { clear: () => void; event: Event<O> } { let subscription: IDisposable; let output: O = undefined; let handle: any = undefined; let numDebouncedCalls = 0; const clear = () => output = undefined; const emitter = new Emitter<O>({ onFirstListenerAdd() { subscription = event(cur => { numDebouncedCalls++; output = merger(output, cur); if (leading && !handle) { emitter.fire(output); } clearTimeout(handle); handle = setTimeout(() => { let _output = output; output = undefined; handle = undefined; if (!leading || numDebouncedCalls > 1) { emitter.fire(_output); } numDebouncedCalls = 0; }, delay); }); }, onLastListenerRemove() { subscription.dispose(); } }); return { event: emitter.event, clear }; }
public dispose() { if (this.actionBar) { this.actionBar.dispose(); this.actionBar = null; } if (this.listener) { this.listener.dispose(); this.listener = null; } }
test('Lightbulb is in the wrong place, #29933', async function () { let reg = CodeActionProviderRegistry.register(languageIdentifier.language, { provideCodeActions(doc, _range) { return []; } }); editor.getModel().setValue('// @ts-check\n2\ncon\n'); markerService.changeOne('fake', uri, [{ startLineNumber: 3, startColumn: 1, endLineNumber: 3, endColumn: 4, message: 'error', severity: 1, code: '', source: '' }]); // case 1 - drag selection over multiple lines -> range of enclosed marker, position or marker await new TPromise(resolve => { let oracle = new QuickFixOracle(editor, markerService, e => { assert.equal(e.type, 'auto'); assert.deepEqual(e.range, { startLineNumber: 3, startColumn: 1, endLineNumber: 3, endColumn: 4 }); assert.deepEqual(e.position, { lineNumber: 3, column: 1 }); oracle.dispose(); resolve(null); }, 5); editor.setSelection({ startLineNumber: 1, startColumn: 1, endLineNumber: 4, endColumn: 1 }); }); // // case 2 - selection over multiple lines & manual trigger -> lightbulb // await new TPromise(resolve => { // editor.setSelection({ startLineNumber: 1, startColumn: 1, endLineNumber: 4, endColumn: 1 }); // let oracle = new QuickFixOracle(editor, markerService, e => { // assert.equal(e.type, 'manual'); // assert.ok(e.range.equalsRange({ startLineNumber: 1, startColumn: 1, endLineNumber: 4, endColumn: 1 })); // oracle.dispose(); // resolve(null); // }, 5); // oracle.trigger('manual'); // }); reg.dispose(); });
public dispose(): void { this._onTitleAreaUpdate.dispose(); this._onDidFocus.dispose(); if (this._focusTracker) { this._focusTracker.dispose(); } if (this._focusListenerDisposable) { this._focusListenerDisposable.dispose(); } super.dispose(); }
const execute = () => { if (listener) { listener.dispose(); listener = null; } if (timeout) { timeout.dispose(); timeout = null; } const tokenizationSupport = TokenizationRegistry.get(language!); if (tokenizationSupport) { return resolve(_colorize(lines, tabSize, tokenizationSupport)); } return resolve(_fakeColorize(lines, tabSize)); };