Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973 (#6381)

* Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973

* disable strict null check
This commit is contained in:
Anthony Dresser
2019-07-15 22:35:46 -07:00
committed by GitHub
parent f720ec642f
commit 0b7e7ddbf9
2406 changed files with 59140 additions and 35464 deletions

View File

@@ -8,7 +8,7 @@ import { domEvent, stop } from 'vs/base/browser/event';
import * as aria from 'vs/base/browser/ui/aria/aria';
import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
import { Event } from 'vs/base/common/event';
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
import { IDisposable, Disposable, DisposableStore, MutableDisposable } from 'vs/base/common/lifecycle';
import 'vs/css!./parameterHints';
import { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from 'vs/editor/browser/editorBrowser';
import { IConfigurationChangedEvent } from 'vs/editor/common/config/editorOptions';
@@ -25,13 +25,13 @@ import { ParameterHintsModel, TriggerContext } from 'vs/editor/contrib/parameter
const $ = dom.$;
export class ParameterHintsWidget implements IContentWidget, IDisposable {
export class ParameterHintsWidget extends Disposable implements IContentWidget, IDisposable {
private static readonly ID = 'editor.widget.parameterHintsWidget';
private readonly markdownRenderer: MarkdownRenderer;
private renderDisposeables: IDisposable[];
private model: ParameterHintsModel | null;
private readonly renderDisposeables = this._register(new DisposableStore());
private readonly model = this._register(new MutableDisposable<ParameterHintsModel>());
private readonly keyVisible: IContextKey<boolean>;
private readonly keyMultipleSignatures: IContextKey<boolean>;
private element: HTMLElement;
@@ -41,7 +41,6 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
private visible: boolean;
private announcedLabel: string | null;
private scrollbar: DomScrollableElement;
private disposables: IDisposable[];
// Editor.IContentWidget.allowEditorOverflow
allowEditorOverflow = true;
@@ -52,14 +51,14 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
@IOpenerService openerService: IOpenerService,
@IModeService modeService: IModeService,
) {
this.markdownRenderer = new MarkdownRenderer(editor, modeService, openerService);
this.model = new ParameterHintsModel(editor);
super();
this.markdownRenderer = this._register(new MarkdownRenderer(editor, modeService, openerService));
this.model.value = new ParameterHintsModel(editor);
this.keyVisible = Context.Visible.bindTo(contextKeyService);
this.keyMultipleSignatures = Context.MultipleSignatures.bindTo(contextKeyService);
this.visible = false;
this.disposables = [];
this.disposables.push(this.model.onChangedHints(newParameterHints => {
this._register(this.model.value.onChangedHints(newParameterHints => {
if (newParameterHints) {
this.show();
this.render(newParameterHints);
@@ -79,16 +78,16 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
const next = dom.append(buttons, $('.button.next'));
const onPreviousClick = stop(domEvent(previous, 'click'));
onPreviousClick(this.previous, this, this.disposables);
this._register(onPreviousClick(this.previous, this));
const onNextClick = stop(domEvent(next, 'click'));
onNextClick(this.next, this, this.disposables);
this._register(onNextClick(this.next, this));
this.overloads = dom.append(wrapper, $('.overloads'));
const body = $('.body');
this.scrollbar = new DomScrollableElement(body, {});
this.disposables.push(this.scrollbar);
this._register(this.scrollbar);
wrapper.appendChild(this.scrollbar.getDomNode());
this.signature = dom.append(body, $('.signature'));
@@ -99,7 +98,7 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
this.hide();
this.element.style.userSelect = 'text';
this.disposables.push(this.editor.onDidChangeCursorSelection(e => {
this._register(this.editor.onDidChangeCursorSelection(e => {
if (this.visible) {
this.editor.layoutContentWidget(this);
}
@@ -112,11 +111,11 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
updateFont();
Event.chain<IConfigurationChangedEvent>(this.editor.onDidChangeConfiguration.bind(this.editor))
this._register(Event.chain<IConfigurationChangedEvent>(this.editor.onDidChangeConfiguration.bind(this.editor))
.filter(e => e.fontInfo)
.on(updateFont, null, this.disposables);
.on(updateFont, null));
this.disposables.push(this.editor.onDidLayoutChange(e => this.updateMaxHeight()));
this._register(this.editor.onDidLayoutChange(e => this.updateMaxHeight()));
this.updateMaxHeight();
}
@@ -190,8 +189,7 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
this.renderParameters(code, signature, hints.activeParameter);
}
dispose(this.renderDisposeables);
this.renderDisposeables = [];
this.renderDisposeables.clear();
const activeParameter = signature.parameters[hints.activeParameter];
@@ -202,7 +200,7 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
} else {
const renderedContents = this.markdownRenderer.render(activeParameter.documentation);
dom.addClass(renderedContents.element, 'markdown-docs');
this.renderDisposeables.push(renderedContents);
this.renderDisposeables.add(renderedContents);
documentation.appendChild(renderedContents.element);
}
dom.append(this.docs, $('p', {}, documentation));
@@ -216,7 +214,7 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
} else {
const renderedContents = this.markdownRenderer.render(signature.documentation);
dom.addClass(renderedContents.element, 'markdown-docs');
this.renderDisposeables.push(renderedContents);
this.renderDisposeables.add(renderedContents);
dom.append(this.docs, renderedContents.element);
}
@@ -284,22 +282,22 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
}
next(): void {
if (this.model) {
if (this.model.value) {
this.editor.focus();
this.model.next();
this.model.value.next();
}
}
previous(): void {
if (this.model) {
if (this.model.value) {
this.editor.focus();
this.model.previous();
this.model.value.previous();
}
}
cancel(): void {
if (this.model) {
this.model.cancel();
if (this.model.value) {
this.model.value.cancel();
}
}
@@ -312,8 +310,8 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
}
trigger(context: TriggerContext): void {
if (this.model) {
this.model.trigger(context, 0);
if (this.model.value) {
this.model.value.trigger(context, 0);
}
}
@@ -321,16 +319,6 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable {
const height = Math.max(this.editor.getLayoutInfo().height / 4, 250);
this.element.style.maxHeight = `${height}px`;
}
dispose(): void {
this.disposables = dispose(this.disposables);
this.renderDisposeables = dispose(this.renderDisposeables);
if (this.model) {
this.model.dispose();
this.model = null;
}
}
}
registerThemingParticipant((theme, collector) => {