Merge from vscode 64980ea1f3f532c82bb6c28d27bba9ef2c5b4463 (#7206)

* Merge from vscode 64980ea1f3f532c82bb6c28d27bba9ef2c5b4463

* fix config changes

* fix strictnull checks
This commit is contained in:
Anthony Dresser
2019-09-15 22:38:26 -07:00
committed by GitHub
parent fa6c52699e
commit ea0f9e6ce9
1226 changed files with 21541 additions and 17633 deletions

View File

@@ -127,7 +127,7 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor
this.createBody(keybindingsEditorElement);
}
setInput(input: KeybindingsEditorInput, options: EditorOptions, token: CancellationToken): Promise<void> {
setInput(input: KeybindingsEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise<void> {
this.keybindingsEditorContextKey.set(true);
return super.setInput(input, options, token)
.then(() => this.render(!!(options && options.preserveFocus)));
@@ -453,7 +453,7 @@ export class KeybindingsEditor extends BaseEditor implements IKeybindingsEditor
private createList(parent: HTMLElement): void {
this.keybindingsListContainer = DOM.append(parent, $('.keybindings-list-container'));
this.keybindingsList = this._register(this.instantiationService.createInstance(WorkbenchList, this.keybindingsListContainer, new Delegate(), [new KeybindingItemRenderer(this, this.instantiationService)], {
this.keybindingsList = this._register(this.instantiationService.createInstance(WorkbenchList, 'KeybindingsEditor', this.keybindingsListContainer, new Delegate(), [new KeybindingItemRenderer(this, this.instantiationService)], {
identityProvider: { getId: (e: IListEntry) => e.id },
ariaLabel: localize('keybindingsLabel', "Keybindings"),
setRowLineHeight: false,

View File

@@ -30,6 +30,7 @@ import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegis
import { KeybindingParser } from 'vs/base/common/keybindingParser';
import Severity from 'vs/base/common/severity';
import { SeverityIcon } from 'vs/platform/severityIcon/common/severityIcon';
import { EditorOption } from 'vs/editor/common/config/editorOptions';
const NLS_LAUNCH_MESSAGE = nls.localize('defineKeybinding.start', "Define Keybinding");
const NLS_KB_LAYOUT_ERROR_MESSAGE = nls.localize('defineKeybinding.kbLayoutErrorMessage', "You won't be able to produce this key combination under your current keyboard layout.");
@@ -82,7 +83,7 @@ export class DefineKeybindingController extends Disposable implements editorComm
this._createKeybindingDecorationRenderer();
// The button to define keybindings is shown only for the user keybindings.json
if (!this._editor.getConfiguration().readOnly) {
if (!this._editor.getOption(EditorOption.readOnly)) {
this._createKeybindingWidgetRenderer();
} else {
this._disposeKeybindingWidgetRenderer();
@@ -302,14 +303,12 @@ export class KeybindingEditorDecorationsRenderer extends Disposable {
private _createDecoration(isError: boolean, uiLabel: string | null, usLabel: string | null, model: ITextModel, keyNode: Node): IModelDeltaDecoration {
let msg: MarkdownString;
let className: string;
let beforeContentClassName: string;
let overviewRulerColor: ThemeColor;
if (isError) {
// this is the error case
msg = new MarkdownString().appendText(NLS_KB_LAYOUT_ERROR_MESSAGE);
className = 'keybindingError';
beforeContentClassName = 'inlineKeybindingError';
overviewRulerColor = themeColorFromId(overviewRulerError);
} else {
// this is the info case
@@ -335,7 +334,6 @@ export class KeybindingEditorDecorationsRenderer extends Disposable {
);
}
className = 'keybindingInfo';
beforeContentClassName = 'inlineKeybindingInfo';
overviewRulerColor = themeColorFromId(overviewRulerInfo);
}
@@ -352,7 +350,6 @@ export class KeybindingEditorDecorationsRenderer extends Disposable {
options: {
stickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
className: className,
beforeContentClassName: beforeContentClassName,
hoverMessage: msg,
overviewRuler: {
color: overviewRulerColor,
@@ -381,7 +378,7 @@ class DefineKeybindingCommand extends EditorCommand {
}
runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor): void {
if (!isInterestingEditorModel(editor) || editor.getConfiguration().readOnly) {
if (!isInterestingEditorModel(editor) || editor.getOption(EditorOption.readOnly)) {
return;
}
const controller = DefineKeybindingController.get(editor);

View File

@@ -1 +0,0 @@
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><title>Layer 1</title><rect height="11" width="3" y="3" x="7" fill="#424242"/><rect height="3" width="11" y="7" x="3" fill="#424242"/></svg>

Before

Width:  |  Height:  |  Size: 203 B

View File

@@ -1 +0,0 @@
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><title>Layer 1</title><rect height="11" width="3" y="3" x="7" fill="#C5C5C5"/><rect height="3" width="11" y="7" x="3" fill="#C5C5C5"/></svg>

Before

Width:  |  Height:  |  Size: 203 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="-0.994 0 16 16" enable-background="new -0.994 0 16 16"><path fill="#C5C5C5" d="M13 6c0 1.461-.636 2.846-1.746 3.797l-5.584 4.951-1.324-1.496 5.595-4.962c.678-.582 1.061-1.413 1.061-2.29 0-1.654-1.345-3-2.997-3-.71 0-1.399.253-1.938.713l-1.521 1.287h2.448l-1.998 2h-3.996v-4l1.998-2v2.692l1.775-1.504c.899-.766 2.047-1.188 3.232-1.188 2.754 0 4.995 2.243 4.995 5z"/></svg>

Before

Width:  |  Height:  |  Size: 443 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="-0.994 0 16 16" enable-background="new -0.994 0 16 16"><path fill="#424242" d="M13 6c0 1.461-.636 2.846-1.746 3.797l-5.584 4.951-1.324-1.496 5.595-4.962c.678-.582 1.061-1.413 1.061-2.29 0-1.654-1.345-3-2.997-3-.71 0-1.399.253-1.938.713l-1.521 1.287h2.448l-1.998 2h-3.996v-4l1.998-2v2.692l1.775-1.504c.899-.766 2.047-1.188 3.232-1.188 2.754 0 4.995 2.243 4.995 5z"/></svg>

Before

Width:  |  Height:  |  Size: 443 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#E8E8E8" d="M6 4v8l4-4-4-4zm1 2.414L8.586 8 7 9.586V6.414z"/></svg>

Before

Width:  |  Height:  |  Size: 139 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#646465" d="M6 4v8l4-4-4-4zm1 2.414L8.586 8 7 9.586V6.414z"/></svg>

Before

Width:  |  Height:  |  Size: 139 B

View File

@@ -1,3 +0,0 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 2.98361V2.97184V2H5.91083C5.59743 2 5.29407 2.06161 5.00128 2.18473C4.70818 2.30798 4.44942 2.48474 4.22578 2.71498C4.00311 2.94422 3.83792 3.19498 3.73282 3.46766L3.73233 3.46898C3.63382 3.7352 3.56814 4.01201 3.53533 4.29917L3.53519 4.30053C3.50678 4.5805 3.4987 4.86844 3.51084 5.16428C3.52272 5.45379 3.52866 5.74329 3.52866 6.03279C3.52866 6.23556 3.48974 6.42594 3.412 6.60507L3.4116 6.60601C3.33687 6.78296 3.23423 6.93866 3.10317 7.07359C2.97644 7.20405 2.82466 7.31055 2.64672 7.3925C2.4706 7.46954 2.28497 7.5082 2.08917 7.5082H2V7.6V8.4V8.4918H2.08917C2.28465 8.4918 2.47001 8.53238 2.64601 8.61334L2.64742 8.61396C2.82457 8.69157 2.97577 8.79762 3.10221 8.93161L3.10412 8.93352C3.23428 9.0637 3.33659 9.21871 3.41129 9.39942L3.41201 9.40108C3.48986 9.58047 3.52866 9.76883 3.52866 9.96721C3.52866 10.2567 3.52272 10.5462 3.51084 10.8357C3.4987 11.1316 3.50677 11.4215 3.53516 11.7055L3.53535 11.7072C3.56819 11.9903 3.63387 12.265 3.73232 12.531L3.73283 12.5323C3.83793 12.805 4.00311 13.0558 4.22578 13.285C4.44942 13.5153 4.70818 13.692 5.00128 13.8153C5.29407 13.9384 5.59743 14 5.91083 14H6V13.2V13.0164H5.91083C5.71095 13.0164 5.52346 12.9777 5.34763 12.9008C5.17396 12.8191 5.02194 12.7126 4.89086 12.5818C4.76386 12.4469 4.66104 12.2911 4.58223 12.1137C4.50838 11.9346 4.47134 11.744 4.47134 11.541C4.47134 11.3127 4.4753 11.0885 4.48321 10.8686C4.49125 10.6411 4.49127 10.4195 4.48324 10.2039C4.47914 9.98246 4.46084 9.76883 4.42823 9.56312C4.39513 9.35024 4.33921 9.14757 4.26039 8.95536C4.18091 8.76157 4.07258 8.57746 3.93616 8.40298C3.82345 8.25881 3.68538 8.12462 3.52283 8C3.68538 7.87538 3.82345 7.74119 3.93616 7.59702C4.07258 7.42254 4.18091 7.23843 4.26039 7.04464C4.33913 6.85263 4.39513 6.65175 4.42826 6.44285C4.46082 6.2333 4.47914 6.01973 4.48324 5.80219C4.49127 5.58262 4.49125 5.36105 4.48321 5.13749C4.4753 4.9134 4.47134 4.68725 4.47134 4.45902C4.47134 4.26019 4.50833 4.07152 4.58238 3.89205C4.66135 3.71034 4.76421 3.55475 4.89086 3.42437C5.02193 3.28942 5.17461 3.18275 5.34802 3.10513C5.5238 3.02427 5.71113 2.98361 5.91083 2.98361H6ZM10 13.0164V13.0282V14H10.0892C10.4026 14 10.7059 13.9384 10.9987 13.8153C11.2918 13.692 11.5506 13.5153 11.7742 13.285C11.9969 13.0558 12.1621 12.805 12.2672 12.5323L12.2677 12.531C12.3662 12.2648 12.4319 11.988 12.4647 11.7008L12.4648 11.6995C12.4932 11.4195 12.5013 11.1316 12.4892 10.8357C12.4773 10.5462 12.4713 10.2567 12.4713 9.96721C12.4713 9.76444 12.5103 9.57406 12.588 9.39493L12.5884 9.39399C12.6631 9.21704 12.7658 9.06134 12.8968 8.92642C13.0236 8.79595 13.1753 8.68945 13.3533 8.6075C13.5294 8.53046 13.715 8.4918 13.9108 8.4918H14V8.4V7.6V7.5082H13.9108C13.7153 7.5082 13.53 7.46762 13.354 7.38666L13.3526 7.38604C13.1754 7.30844 13.0242 7.20238 12.8978 7.06839L12.8959 7.06648C12.7657 6.9363 12.6634 6.78129 12.5887 6.60058L12.588 6.59892C12.5101 6.41953 12.4713 6.23117 12.4713 6.03279C12.4713 5.74329 12.4773 5.45379 12.4892 5.16428C12.5013 4.86842 12.4932 4.57848 12.4648 4.29454L12.4646 4.29285C12.4318 4.00971 12.3661 3.73502 12.2677 3.46897L12.2672 3.46766C12.1621 3.19499 11.9969 2.94422 11.7742 2.71498C11.5506 2.48474 11.2918 2.30798 10.9987 2.18473C10.7059 2.06161 10.4026 2 10.0892 2H10V2.8V2.98361H10.0892C10.2891 2.98361 10.4765 3.0223 10.6524 3.09917C10.826 3.18092 10.9781 3.28736 11.1091 3.41823C11.2361 3.55305 11.339 3.70889 11.4178 3.88628C11.4916 4.0654 11.5287 4.25596 11.5287 4.45902C11.5287 4.68727 11.5247 4.91145 11.5168 5.13142C11.5088 5.35894 11.5087 5.58049 11.5168 5.79605C11.5209 6.01754 11.5392 6.23117 11.5718 6.43688C11.6049 6.64976 11.6608 6.85243 11.7396 7.04464C11.8191 7.23843 11.9274 7.42254 12.0638 7.59702C12.1765 7.74119 12.3146 7.87538 12.4772 8C12.3146 8.12462 12.1765 8.25881 12.0638 8.40298C11.9274 8.57746 11.8191 8.76157 11.7396 8.95536C11.6609 9.14737 11.6049 9.34825 11.5717 9.55715C11.5392 9.7667 11.5209 9.98027 11.5168 10.1978C11.5087 10.4174 11.5087 10.6389 11.5168 10.8625C11.5247 11.0866 11.5287 11.3128 11.5287 11.541C11.5287 11.7398 11.4917 11.9285 11.4176 12.1079C11.3386 12.2897 11.2358 12.4452 11.1091 12.5756C10.9781 12.7106 10.8254 12.8173 10.652 12.8949C10.4762 12.9757 10.2889 13.0164 10.0892 13.0164H10Z" fill="#C5C5C5"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -1,3 +0,0 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 2.98361V2.97184V2H5.91083C5.59743 2 5.29407 2.06161 5.00128 2.18473C4.70818 2.30798 4.44942 2.48474 4.22578 2.71498C4.00311 2.94422 3.83792 3.19498 3.73282 3.46766L3.73233 3.46898C3.63382 3.7352 3.56814 4.01201 3.53533 4.29917L3.53519 4.30053C3.50678 4.5805 3.4987 4.86844 3.51084 5.16428C3.52272 5.45379 3.52866 5.74329 3.52866 6.03279C3.52866 6.23556 3.48974 6.42594 3.412 6.60507L3.4116 6.60601C3.33687 6.78296 3.23423 6.93866 3.10317 7.07359C2.97644 7.20405 2.82466 7.31055 2.64672 7.3925C2.4706 7.46954 2.28497 7.5082 2.08917 7.5082H2V7.6V8.4V8.4918H2.08917C2.28465 8.4918 2.47001 8.53238 2.64601 8.61334L2.64742 8.61396C2.82457 8.69157 2.97577 8.79762 3.10221 8.93161L3.10412 8.93352C3.23428 9.0637 3.33659 9.21871 3.41129 9.39942L3.41201 9.40108C3.48986 9.58047 3.52866 9.76883 3.52866 9.96721C3.52866 10.2567 3.52272 10.5462 3.51084 10.8357C3.4987 11.1316 3.50677 11.4215 3.53516 11.7055L3.53535 11.7072C3.56819 11.9903 3.63387 12.265 3.73232 12.531L3.73283 12.5323C3.83793 12.805 4.00311 13.0558 4.22578 13.285C4.44942 13.5153 4.70818 13.692 5.00128 13.8153C5.29407 13.9384 5.59743 14 5.91083 14H6V13.2V13.0164H5.91083C5.71095 13.0164 5.52346 12.9777 5.34763 12.9008C5.17396 12.8191 5.02194 12.7126 4.89086 12.5818C4.76386 12.4469 4.66104 12.2911 4.58223 12.1137C4.50838 11.9346 4.47134 11.744 4.47134 11.541C4.47134 11.3127 4.4753 11.0885 4.48321 10.8686C4.49125 10.6411 4.49127 10.4195 4.48324 10.2039C4.47914 9.98246 4.46084 9.76883 4.42823 9.56312C4.39513 9.35024 4.33921 9.14757 4.26039 8.95536C4.18091 8.76157 4.07258 8.57746 3.93616 8.40298C3.82345 8.25881 3.68538 8.12462 3.52283 8C3.68538 7.87538 3.82345 7.74119 3.93616 7.59702C4.07258 7.42254 4.18091 7.23843 4.26039 7.04464C4.33913 6.85263 4.39513 6.65175 4.42826 6.44285C4.46082 6.2333 4.47914 6.01973 4.48324 5.80219C4.49127 5.58262 4.49125 5.36105 4.48321 5.13749C4.4753 4.9134 4.47134 4.68725 4.47134 4.45902C4.47134 4.26019 4.50833 4.07152 4.58238 3.89205C4.66135 3.71034 4.76421 3.55475 4.89086 3.42437C5.02193 3.28942 5.17461 3.18275 5.34802 3.10513C5.5238 3.02427 5.71113 2.98361 5.91083 2.98361H6ZM10 13.0164V13.0282V14H10.0892C10.4026 14 10.7059 13.9384 10.9987 13.8153C11.2918 13.692 11.5506 13.5153 11.7742 13.285C11.9969 13.0558 12.1621 12.805 12.2672 12.5323L12.2677 12.531C12.3662 12.2648 12.4319 11.988 12.4647 11.7008L12.4648 11.6995C12.4932 11.4195 12.5013 11.1316 12.4892 10.8357C12.4773 10.5462 12.4713 10.2567 12.4713 9.96721C12.4713 9.76444 12.5103 9.57406 12.588 9.39493L12.5884 9.39399C12.6631 9.21704 12.7658 9.06134 12.8968 8.92642C13.0236 8.79595 13.1753 8.68945 13.3533 8.6075C13.5294 8.53046 13.715 8.4918 13.9108 8.4918H14V8.4V7.6V7.5082H13.9108C13.7153 7.5082 13.53 7.46762 13.354 7.38666L13.3526 7.38604C13.1754 7.30844 13.0242 7.20238 12.8978 7.06839L12.8959 7.06648C12.7657 6.9363 12.6634 6.78129 12.5887 6.60058L12.588 6.59892C12.5101 6.41953 12.4713 6.23117 12.4713 6.03279C12.4713 5.74329 12.4773 5.45379 12.4892 5.16428C12.5013 4.86842 12.4932 4.57848 12.4648 4.29454L12.4646 4.29285C12.4318 4.00971 12.3661 3.73502 12.2677 3.46897L12.2672 3.46766C12.1621 3.19499 11.9969 2.94422 11.7742 2.71498C11.5506 2.48474 11.2918 2.30798 10.9987 2.18473C10.7059 2.06161 10.4026 2 10.0892 2H10V2.8V2.98361H10.0892C10.2891 2.98361 10.4765 3.0223 10.6524 3.09917C10.826 3.18092 10.9781 3.28736 11.1091 3.41823C11.2361 3.55305 11.339 3.70889 11.4178 3.88628C11.4916 4.0654 11.5287 4.25596 11.5287 4.45902C11.5287 4.68727 11.5247 4.91145 11.5168 5.13142C11.5088 5.35894 11.5087 5.58049 11.5168 5.79605C11.5209 6.01754 11.5392 6.23117 11.5718 6.43688C11.6049 6.64976 11.6608 6.85243 11.7396 7.04464C11.8191 7.23843 11.9274 7.42254 12.0638 7.59702C12.1765 7.74119 12.3146 7.87538 12.4772 8C12.3146 8.12462 12.1765 8.25881 12.0638 8.40298C11.9274 8.57746 11.8191 8.76157 11.7396 8.95536C11.6609 9.14737 11.6049 9.34825 11.5717 9.55715C11.5392 9.7667 11.5209 9.98027 11.5168 10.1978C11.5087 10.4174 11.5087 10.6389 11.5168 10.8625C11.5247 11.0866 11.5287 11.3128 11.5287 11.541C11.5287 11.7398 11.4917 11.9285 11.4176 12.1079C11.3386 12.2897 11.2358 12.4452 11.1091 12.5756C10.9781 12.7106 10.8254 12.8173 10.652 12.8949C10.4762 12.9757 10.2889 13.0164 10.0892 13.0164H10Z" fill="#424242"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#F6F6F6;} .icon-vs-out{fill:#F6F6F6;} .icon-vs-bg{fill:#424242;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 4.28l-11.673 11.72h-4.327v-4.406l11.477-11.594h.308l4.215 4.237v.043z" id="outline" style="display: none;"/><path class="icon-vs-bg" d="M14.598 4.25l-1.688 1.75-3-3 1.688-1.75 3 3zm-5.688-.25l-7 7 3 3 7-7-3-3zm-7.91 8.09v2.91h2.91l-2.91-2.91z" id="iconBg"/></svg>

Before

Width:  |  Height:  |  Size: 571 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#2d2d30;} .icon-vs-out{fill:#2d2d30;} .icon-vs-bg{fill:#c5c5c5;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 4.28l-11.673 11.72h-4.327v-4.406l11.477-11.594h.308l4.215 4.237v.043z" id="outline" style="display: none;"/><path class="icon-vs-bg" d="M14.598 4.25l-1.688 1.75-3-3 1.688-1.75 3 3zm-5.688-.25l-7 7 3 3 7-7-3-3zm-7.91 8.09v2.91h2.91l-2.91-2.91z" id="iconBg"/></svg>

Before

Width:  |  Height:  |  Size: 571 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#252526;}.icon-canvas-transparent{opacity:0;}.icon-vs-bg{fill:#c5c5c5;}</style></defs><title>Ellipsis_bold_16x</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M6,7.5A2.5,2.5,0,1,1,3.5,5,2.5,2.5,0,0,1,6,7.5ZM8.5,5A2.5,2.5,0,1,0,11,7.5,2.5,2.5,0,0,0,8.5,5Zm5,0A2.5,2.5,0,1,0,16,7.5,2.5,2.5,0,0,0,13.5,5Z" style="display: none;"/></g><g id="iconBg"><path class="icon-vs-bg" d="M5,7.5A1.5,1.5,0,1,1,3.5,6,1.5,1.5,0,0,1,5,7.5ZM8.5,6A1.5,1.5,0,1,0,10,7.5,1.5,1.5,0,0,0,8.5,6Zm5,0A1.5,1.5,0,1,0,15,7.5,1.5,1.5,0,0,0,13.5,6Z"/></g></svg>

Before

Width:  |  Height:  |  Size: 748 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-vs-bg{fill:#424242;}</style></defs><title>Ellipsis_bold_16x</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M6,7.5A2.5,2.5,0,1,1,3.5,5,2.5,2.5,0,0,1,6,7.5ZM8.5,5A2.5,2.5,0,1,0,11,7.5,2.5,2.5,0,0,0,8.5,5Zm5,0A2.5,2.5,0,1,0,16,7.5,2.5,2.5,0,0,0,13.5,5Z" style="display: none;"/></g><g id="iconBg"><path class="icon-vs-bg" d="M5,7.5A1.5,1.5,0,1,1,3.5,6,1.5,1.5,0,0,1,5,7.5ZM8.5,6A1.5,1.5,0,1,0,10,7.5,1.5,1.5,0,0,0,8.5,6Zm5,0A1.5,1.5,0,1,0,15,7.5,1.5,1.5,0,0,0,13.5,6Z"/></g></svg>

Before

Width:  |  Height:  |  Size: 748 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#E8E8E8" d="M11 10H5.344L11 4.414V10z"/></svg>

Before

Width:  |  Height:  |  Size: 118 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#646465" d="M11 10H5.344L11 4.414V10z"/></svg>

Before

Width:  |  Height:  |  Size: 118 B

View File

@@ -41,24 +41,6 @@
}
/* Editor decorations */
.monaco-editor .inlineKeybindingInfo:before {
margin: 0.2em 0.1em 0 0.1em;
content:" ";
display:inline-block;
height:0.8em;
width:1em;
background-size: 0.9em;
}
.monaco-editor .inlineKeybindingError:before {
margin: 0.1em 0.1em 0 0.1em;
content:" ";
display:inline-block;
height:0.8em;
width:1em;
background-size: 1em;
}
.monaco-editor .keybindingInfo {
box-shadow: inset 0 0 0 1px #B9B9B9;
background-color: rgba(100, 100, 250, 0.2);

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><polygon fill="#C5C5C5" points="10,2 7.414,2 8.414,3 9,3 9,3.586 9,4 9,4.414 9,6 12,6 12,13 4,13 4,8 3,8 3,14 13,14 13,5"/><polygon fill="#75BEFF" points="5,1 3,1 5,3 1,3 1,5 5,5 3,7 5,7 8,4"/></svg>

Before

Width:  |  Height:  |  Size: 262 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><polygon fill="#656565" points="10,2 7.414,2 8.414,3 9,3 9,3.586 9,4 9,4.414 9,6 12,6 12,13 4,13 4,8 3,8 3,14 13,14 13,5"/><polygon fill="#00539C" points="5,1 3,1 5,3 1,3 1,5 5,5 3,7 5,7 8,4"/></svg>

Before

Width:  |  Height:  |  Size: 262 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><polygon fill="#2d2d30" points="13.64,7.396 12.169,2.898 10.706,3.761 11.087,2 6.557,2 6.936,3.762 5.473,2.898 4,7.396 5.682,7.554 4.513,8.561 5.013,9 2,9 2,14 7,14 7,10.747 7.978,11.606 8.82,9.725 9.661,11.602 13.144,8.562 11.968,7.554"/><g fill="#C5C5C5"><path d="M12.301 6.518l-2.772.262 2.086 1.788-1.594 1.392-1.201-2.682-1.201 2.682-1.583-1.392 2.075-1.788-2.771-.262.696-2.126 2.358 1.392-.599-2.784h2.053l-.602 2.783 2.359-1.392.696 2.127z"/><rect x="3" y="10" width="3" height="3"/></g></svg>

Before

Width:  |  Height:  |  Size: 564 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><polygon fill="#F6F6F6" points="13.64,7.396 12.169,2.898 10.706,3.761 11.087,2 6.557,2 6.936,3.762 5.473,2.898 4,7.396 5.682,7.554 4.513,8.561 5.013,9 2,9 2,14 7,14 7,10.747 7.978,11.606 8.82,9.725 9.661,11.602 13.144,8.562 11.968,7.554"/><g fill="#424242"><path d="M12.301 6.518l-2.772.262 2.086 1.788-1.594 1.392-1.201-2.682-1.201 2.682-1.583-1.392 2.075-1.788-2.771-.262.696-2.126 2.358 1.392-.599-2.784h2.053l-.602 2.783 2.359-1.392.696 2.127z"/><rect x="3" y="10" width="3" height="3"/></g></svg>

Before

Width:  |  Height:  |  Size: 564 B

View File

@@ -486,6 +486,7 @@
.settings-editor > .settings-body > .settings-tree-container .setting-item-new-extensions .settings-new-extensions-button {
margin: auto;
margin-bottom: 15px;
width: initial;
padding: 4px 10px;
}

View File

@@ -39,6 +39,7 @@ import { ExplorerRootContext, ExplorerFolderContext } from 'vs/workbench/contrib
import { ILabelService } from 'vs/platform/label/common/label';
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts';
import { registerAndGetAmdImageURL } from 'vs/base/common/amd';
Registry.as<IEditorRegistry>(EditorExtensions.Editors).registerEditor(
new EditorDescriptor(
@@ -366,6 +367,8 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({
}
});
const PREFERENCES_EDITOR_LIGHT_ICON_URI = URI.parse(registerAndGetAmdImageURL(`vs/workbench/contrib/preferences/browser/media/preferences-editor-light.svg`));
const PREFERENCES_EDITOR_DARK_ICON_URI = URI.parse(registerAndGetAmdImageURL(`vs/workbench/contrib/preferences/browser/media/preferences-editor-dark.svg`));
class PreferencesActionsContribution extends Disposable implements IWorkbenchContribution {
constructor(
@@ -381,8 +384,8 @@ class PreferencesActionsContribution extends Disposable implements IWorkbenchCon
id: OpenGlobalKeybindingsAction.ID,
title: OpenGlobalKeybindingsAction.LABEL,
iconLocation: {
light: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-light.svg`)),
dark: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-dark.svg`))
light: PREFERENCES_EDITOR_LIGHT_ICON_URI,
dark: PREFERENCES_EDITOR_DARK_ICON_URI
}
},
when: ResourceContextKey.Resource.isEqualTo(environmentService.keybindingsResource.toString()),
@@ -397,8 +400,8 @@ class PreferencesActionsContribution extends Disposable implements IWorkbenchCon
id: commandId,
title: OpenSettings2Action.LABEL,
iconLocation: {
light: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-light.svg`)),
dark: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-dark.svg`))
light: PREFERENCES_EDITOR_LIGHT_ICON_URI,
dark: PREFERENCES_EDITOR_DARK_ICON_URI
}
},
when: ResourceContextKey.Resource.isEqualTo(environmentService.settingsResource.toString()),
@@ -438,8 +441,8 @@ class PreferencesActionsContribution extends Disposable implements IWorkbenchCon
id: commandId,
title: OpenSettings2Action.LABEL,
iconLocation: {
light: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-light.svg`)),
dark: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-dark.svg`))
light: PREFERENCES_EDITOR_LIGHT_ICON_URI,
dark: PREFERENCES_EDITOR_DARK_ICON_URI
}
},
when: ContextKeyExpr.and(ResourceContextKey.Resource.isEqualTo(this.preferencesService.workspaceSettingsResource!.toString()), WorkbenchStateContext.isEqualTo('workspace')),
@@ -466,8 +469,8 @@ class PreferencesActionsContribution extends Disposable implements IWorkbenchCon
id: commandId,
title: OpenSettings2Action.LABEL,
iconLocation: {
light: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-light.svg`)),
dark: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-dark.svg`))
light: PREFERENCES_EDITOR_LIGHT_ICON_URI,
dark: PREFERENCES_EDITOR_DARK_ICON_URI
}
},
when: ContextKeyExpr.and(ResourceContextKey.Resource.isEqualTo(this.preferencesService.getFolderSettingsResource(folder.uri)!.toString())),
@@ -533,8 +536,8 @@ MenuRegistry.appendMenuItem(MenuId.EditorTitle, {
id: OpenGlobalKeybindingsFileAction.ID,
title: OpenGlobalKeybindingsFileAction.LABEL,
iconLocation: {
light: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-light.svg`)),
dark: URI.parse(require.toUrl(`vs/workbench/contrib/preferences/browser/media/preferences-editor-dark.svg`))
light: PREFERENCES_EDITOR_LIGHT_ICON_URI,
dark: PREFERENCES_EDITOR_DARK_ICON_URI
}
},
when: ContextKeyExpr.and(CONTEXT_KEYBINDINGS_EDITOR),
@@ -817,8 +820,8 @@ MenuRegistry.appendMenuItem(MenuId.EditorTitle, {
id: SETTINGS_EDITOR_COMMAND_SWITCH_TO_JSON,
title: nls.localize('openSettingsJson', "Open Settings (JSON)"),
iconLocation: {
dark: URI.parse(require.toUrl('vs/workbench/contrib/preferences/browser/media/preferences-editor-dark.svg')),
light: URI.parse(require.toUrl('vs/workbench/contrib/preferences/browser/media/preferences-editor-light.svg'))
dark: PREFERENCES_EDITOR_DARK_ICON_URI,
light: PREFERENCES_EDITOR_LIGHT_ICON_URI
}
},
group: 'navigation',

View File

@@ -63,15 +63,15 @@ export class PreferencesEditor extends BaseEditor {
private defaultSettingsEditorContextKey: IContextKey<boolean>;
private defaultSettingsJSONEditorContextKey: IContextKey<boolean>;
private searchFocusContextKey: IContextKey<boolean>;
private headerContainer: HTMLElement;
private searchWidget: SearchWidget;
private sideBySidePreferencesWidget: SideBySidePreferencesWidget;
private preferencesRenderers: PreferencesRenderersController;
private headerContainer!: HTMLElement;
private searchWidget!: SearchWidget;
private sideBySidePreferencesWidget!: SideBySidePreferencesWidget;
private preferencesRenderers!: PreferencesRenderersController;
private delayedFilterLogging: Delayer<void>;
private localSearchDelayer: Delayer<void>;
private remoteSearchThrottle: ThrottledDelayer<void>;
private _lastReportedFilter: string;
private _lastReportedFilter: string | null = null;
private lastFocusedWidget: SearchWidget | SideBySidePreferencesWidget | undefined = undefined;
@@ -154,7 +154,7 @@ export class PreferencesEditor extends BaseEditor {
this.preferencesRenderers.editFocusedPreference();
}
setInput(newInput: EditorInput, options: SettingsEditorOptions, token: CancellationToken): Promise<void> {
setInput(newInput: EditorInput, options: SettingsEditorOptions | undefined, token: CancellationToken): Promise<void> {
this.defaultSettingsEditorContextKey.set(true);
this.defaultSettingsJSONEditorContextKey.set(true);
if (options && options.query) {
@@ -202,12 +202,12 @@ export class PreferencesEditor extends BaseEditor {
super.clearInput();
}
protected setEditorVisible(visible: boolean, group: IEditorGroup): void {
protected setEditorVisible(visible: boolean, group: IEditorGroup | undefined): void {
this.sideBySidePreferencesWidget.setEditorVisible(visible, group);
super.setEditorVisible(visible, group);
}
private updateInput(newInput: PreferencesEditorInput, options: EditorOptions, token: CancellationToken): Promise<void> {
private updateInput(newInput: PreferencesEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise<void> {
return this.sideBySidePreferencesWidget.setInput(<DefaultPreferencesEditorInput>newInput.details, <EditorInput>newInput.master, options, token).then(({ defaultPreferencesRenderer, editablePreferencesRenderer }) => {
if (token.isCancellationRequested) {
return;
@@ -298,7 +298,7 @@ export class PreferencesEditor extends BaseEditor {
return result;
}
private reportFilteringUsed(filter: string, filterResult: IFilterResult | undefined): void {
private reportFilteringUsed(filter: string, filterResult: IFilterResult | null): void {
if (filter && filter !== this._lastReportedFilter) {
const metadata = filterResult && filterResult.metadata;
const counts = filterResult && this._countById(filterResult.filteredGroups);
@@ -354,20 +354,20 @@ interface IPreferencesCount {
class PreferencesRenderersController extends Disposable {
private _defaultPreferencesRenderer: IPreferencesRenderer<ISetting>;
private _defaultPreferencesRenderer!: IPreferencesRenderer<ISetting>;
private _defaultPreferencesRendererDisposables: IDisposable[] = [];
private _editablePreferencesRenderer: IPreferencesRenderer<ISetting>;
private _editablePreferencesRenderer!: IPreferencesRenderer<ISetting>;
private _editablePreferencesRendererDisposables: IDisposable[] = [];
private _settingsNavigator: SettingsNavigator;
private _remoteFilterCancelToken: CancellationTokenSource | undefined;
private _settingsNavigator: SettingsNavigator | null = null;
private _remoteFilterCancelToken: CancellationTokenSource | null = null;
private _prefsModelsForSearch = new Map<string, ISettingsEditorModel>();
private _currentLocalSearchProvider: ISearchProvider;
private _currentRemoteSearchProvider: ISearchProvider | undefined;
private _lastQuery: string;
private _lastFilterResult: IFilterResult | undefined;
private _currentLocalSearchProvider: ISearchProvider | null = null;
private _currentRemoteSearchProvider: ISearchProvider | null = null;
private _lastQuery = '';
private _lastFilterResult: IFilterResult | null = null;
private readonly _onDidFilterResultsCountChange: Emitter<IPreferencesCount> = this._register(new Emitter<IPreferencesCount>());
readonly onDidFilterResultsCountChange: Event<IPreferencesCount> = this._onDidFilterResultsCountChange.event;
@@ -382,7 +382,7 @@ class PreferencesRenderersController extends Disposable {
super();
}
get lastFilterResult(): IFilterResult | undefined {
get lastFilterResult(): IFilterResult | null {
return this._lastFilterResult;
}
@@ -445,16 +445,16 @@ class PreferencesRenderersController extends Disposable {
if (this._remoteFilterCancelToken) {
this._remoteFilterCancelToken.cancel();
this._remoteFilterCancelToken.dispose();
this._remoteFilterCancelToken = undefined;
this._remoteFilterCancelToken = null;
}
this._currentRemoteSearchProvider = (updateCurrentResults && this._currentRemoteSearchProvider) || this.preferencesSearchService.getRemoteSearchProvider(query);
this._currentRemoteSearchProvider = (updateCurrentResults && this._currentRemoteSearchProvider) || this.preferencesSearchService.getRemoteSearchProvider(query) || null;
this._remoteFilterCancelToken = new CancellationTokenSource();
return this.filterOrSearchPreferences(query, this._currentRemoteSearchProvider!, 'nlpResult', nls.localize('nlpResult', "Natural Language Results"), 1, this._remoteFilterCancelToken.token, updateCurrentResults).then(() => {
if (this._remoteFilterCancelToken) {
this._remoteFilterCancelToken.dispose();
this._remoteFilterCancelToken = undefined;
this._remoteFilterCancelToken = null;
}
}, err => {
if (isPromiseCanceledError(err)) {
@@ -489,11 +489,11 @@ class PreferencesRenderersController extends Disposable {
let [editableFilterResult, defaultFilterResult] = results;
if (!defaultFilterResult && editableContentOnly) {
defaultFilterResult = this.lastFilterResult;
defaultFilterResult = this.lastFilterResult!;
}
this.consolidateAndUpdate(defaultFilterResult, editableFilterResult);
this._lastFilterResult = defaultFilterResult;
this._lastFilterResult = withUndefinedAsNull(defaultFilterResult);
return !!(defaultFilterResult && defaultFilterResult.exactMatch);
});
@@ -766,7 +766,7 @@ class SideBySidePreferencesWidget extends Widget {
private defaultPreferencesHeader: HTMLElement;
private defaultPreferencesEditor: DefaultPreferencesEditor;
private editablePreferencesEditor: BaseEditor;
private editablePreferencesEditor: BaseEditor | null = null;
private defaultPreferencesEditorContainer: HTMLElement;
private editablePreferencesEditorContainer: HTMLElement;
@@ -780,8 +780,8 @@ class SideBySidePreferencesWidget extends Widget {
private splitview: SplitView;
private isVisible: boolean;
private group: IEditorGroup;
private isVisible = false;
private group: IEditorGroup | undefined;
get minimumWidth(): number { return this.splitview.minimumSize; }
get maximumWidth(): number { return this.splitview.maximumSize; }
@@ -845,12 +845,12 @@ class SideBySidePreferencesWidget extends Widget {
this._register(focusTracker.onDidFocus(() => this._onFocus.fire()));
}
setInput(defaultPreferencesEditorInput: DefaultPreferencesEditorInput, editablePreferencesEditorInput: EditorInput, options: EditorOptions, token: CancellationToken): Promise<{ defaultPreferencesRenderer?: IPreferencesRenderer<ISetting>, editablePreferencesRenderer?: IPreferencesRenderer<ISetting> }> {
setInput(defaultPreferencesEditorInput: DefaultPreferencesEditorInput, editablePreferencesEditorInput: EditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise<{ defaultPreferencesRenderer?: IPreferencesRenderer<ISetting>, editablePreferencesRenderer?: IPreferencesRenderer<ISetting> }> {
this.getOrCreateEditablePreferencesEditor(editablePreferencesEditorInput);
this.settingsTargetsWidget.settingsTarget = this.getSettingsTarget(editablePreferencesEditorInput.getResource()!);
return Promise.all([
this.updateInput(this.defaultPreferencesEditor, defaultPreferencesEditorInput, DefaultSettingsEditorContribution.ID, editablePreferencesEditorInput.getResource()!, options, token),
this.updateInput(this.editablePreferencesEditor, editablePreferencesEditorInput, SettingsEditorContribution.ID, defaultPreferencesEditorInput.getResource()!, options, token)
this.updateInput(this.editablePreferencesEditor!, editablePreferencesEditorInput, SettingsEditorContribution.ID, defaultPreferencesEditorInput.getResource()!, options, token)
])
.then(([defaultPreferencesRenderer, editablePreferencesRenderer]) => {
if (token.isCancellationRequested) {
@@ -902,7 +902,7 @@ class SideBySidePreferencesWidget extends Widget {
}
}
setEditorVisible(visible: boolean, group: IEditorGroup): void {
setEditorVisible(visible: boolean, group: IEditorGroup | undefined): void {
this.isVisible = visible;
this.group = group;
@@ -928,7 +928,7 @@ class SideBySidePreferencesWidget extends Widget {
return editor;
}
private updateInput(editor: BaseEditor, input: EditorInput, editorContributionId: string, associatedPreferencesModelUri: URI, options: EditorOptions, token: CancellationToken): Promise<IPreferencesRenderer<ISetting> | undefined> {
private updateInput(editor: BaseEditor, input: EditorInput, editorContributionId: string, associatedPreferencesModelUri: URI, options: EditorOptions | undefined, token: CancellationToken): Promise<IPreferencesRenderer<ISetting> | undefined> {
return editor.setInput(input, options, token)
.then<any>(() => {
if (token.isCancellationRequested) {
@@ -1034,7 +1034,7 @@ export class DefaultPreferencesEditor extends BaseTextEditor {
return options;
}
setInput(input: DefaultPreferencesEditorInput, options: EditorOptions, token: CancellationToken): Promise<void> {
setInput(input: DefaultPreferencesEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise<void> {
return super.setInput(input, options, token)
.then(() => this.input!.resolve()
.then<any>(editorModel => {
@@ -1078,7 +1078,7 @@ interface ISettingsEditorContribution extends editorCommon.IEditorContribution {
abstract class AbstractSettingsEditorContribution extends Disposable implements ISettingsEditorContribution {
private preferencesRendererCreationPromise: Promise<IPreferencesRenderer<ISetting> | null> | null;
private preferencesRendererCreationPromise: Promise<IPreferencesRenderer<ISetting> | null> | null = null;
constructor(protected editor: ICodeEditor,
@IInstantiationService protected instantiationService: IInstantiationService,

View File

@@ -31,6 +31,7 @@ import { IFilterResult, IPreferencesEditorModel, IPreferencesService, ISetting,
import { DefaultSettingsEditorModel, SettingsEditorModel, WorkspaceConfigurationEditorModel } from 'vs/workbench/services/preferences/common/preferencesModels';
import { IMarkerService, IMarkerData, MarkerSeverity, MarkerTag } from 'vs/platform/markers/common/markers';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { EditorOption } from 'vs/editor/common/config/editorOptions';
export interface IPreferencesRenderer<T> extends IDisposable {
readonly preferencesModel: IPreferencesEditorModel<T>;
@@ -56,7 +57,7 @@ export class UserSettingsRenderer extends Disposable implements IPreferencesRend
private editSettingActionRenderer: EditSettingRenderer;
private highlightMatchesRenderer: HighlightMatchesRenderer;
private modelChangeDelayer: Delayer<void> = new Delayer<void>(200);
private associatedPreferencesModel: IPreferencesEditorModel<ISetting>;
private associatedPreferencesModel!: IPreferencesEditorModel<ISetting>;
private readonly _onFocusPreference = this._register(new Emitter<ISetting>());
readonly onFocusPreference: Event<ISetting> = this._onFocusPreference.event;
@@ -228,7 +229,7 @@ export class FolderSettingsRenderer extends UserSettingsRenderer implements IPre
export class DefaultSettingsRenderer extends Disposable implements IPreferencesRenderer<ISetting> {
private _associatedPreferencesModel: IPreferencesEditorModel<ISetting>;
private _associatedPreferencesModel!: IPreferencesEditorModel<ISetting>;
private settingHighlighter: SettingHighlighter;
private settingsHeaderRenderer: DefaultSettingsHeaderRenderer;
private settingsGroupTitleRenderer: SettingsGroupTitleRenderer;
@@ -362,7 +363,7 @@ export interface HiddenAreasProvider {
export class BracesHidingRenderer extends Disposable implements HiddenAreasProvider {
private _result: IFilterResult | undefined;
private _settingsGroups: ISettingsGroup[];
private _settingsGroups!: ISettingsGroup[];
constructor(private editor: ICodeEditor) {
super();
@@ -444,9 +445,9 @@ export class SettingsGroupTitleRenderer extends Disposable implements HiddenArea
private readonly _onHiddenAreasChanged = this._register(new Emitter<void>());
readonly onHiddenAreasChanged: Event<void> = this._onHiddenAreasChanged.event;
private settingsGroups: ISettingsGroup[];
private settingsGroups!: ISettingsGroup[];
private hiddenGroups: ISettingsGroup[] = [];
private settingsGroupTitleWidgets: SettingsGroupTitleWidget[];
private settingsGroupTitleWidgets!: SettingsGroupTitleWidget[];
private readonly renderDisposables = this._register(new DisposableStore());
constructor(private editor: ICodeEditor,
@@ -648,7 +649,7 @@ class EditSettingRenderer extends Disposable {
private editPreferenceWidgetForMouseMove: EditPreferenceWidget<IIndexedSetting>;
private settingsGroups: ISettingsGroup[] = [];
associatedPreferencesModel: IPreferencesEditorModel<ISetting>;
associatedPreferencesModel!: IPreferencesEditorModel<ISetting>;
private toggleEditPreferencesForMouseMoveDelayer: Delayer<void>;
private readonly _onUpdateSetting: Emitter<{ key: string, value: any, source: IIndexedSetting }> = new Emitter<{ key: string, value: any, source: IIndexedSetting }>();
@@ -690,7 +691,7 @@ class EditSettingRenderer extends Disposable {
}
private onConfigurationChanged(): void {
if (!this.editor.getConfiguration().viewInfo.glyphMargin) {
if (!this.editor.getOption(EditorOption.glyphMargin)) {
this.editPreferenceWidgetForCursorPosition.hide();
this.editPreferenceWidgetForMouseMove.hide();
}
@@ -740,7 +741,7 @@ class EditSettingRenderer extends Disposable {
private showEditPreferencesWidget(editPreferencesWidget: EditPreferenceWidget<ISetting>, settings: IIndexedSetting[]) {
const line = settings[0].valueRange.startLineNumber;
if (this.editor.getConfiguration().viewInfo.glyphMargin && this.marginFreeFromOtherDecorations(line)) {
if (this.editor.getOption(EditorOption.glyphMargin) && this.marginFreeFromOtherDecorations(line)) {
editPreferencesWidget.show(line, nls.localize('editTtile', "Edit"), settings);
const editPreferenceWidgetToHide = editPreferencesWidget === this.editPreferenceWidgetForCursorPosition ? this.editPreferenceWidgetForMouseMove : this.editPreferenceWidgetForCursorPosition;
editPreferenceWidgetToHide.hide();
@@ -915,7 +916,7 @@ class SettingHighlighter extends Disposable {
private fixedHighlighter: RangeHighlightDecorations;
private volatileHighlighter: RangeHighlightDecorations;
private highlightedSetting: ISetting;
private highlightedSetting!: ISetting;
constructor(private editor: ICodeEditor, private readonly focusEventEmitter: Emitter<ISetting>, private readonly clearFocusEventEmitter: Emitter<ISetting>,
@IInstantiationService instantiationService: IInstantiationService
@@ -1017,12 +1018,12 @@ class UnsupportedSettingsRenderer extends Disposable {
}
private handleLocalUserConfiguration(setting: ISetting, configuration: IConfigurationNode, markerData: IMarkerData[]): void {
if (this.workbenchEnvironmentService.configuration.remote && configuration.scope === ConfigurationScope.MACHINE) {
if (this.workbenchEnvironmentService.configuration.remoteAuthority && (configuration.scope === ConfigurationScope.MACHINE || configuration.scope === ConfigurationScope.MACHINE_OVERRIDABLE)) {
markerData.push({
severity: MarkerSeverity.Hint,
tags: [MarkerTag.Unnecessary],
...setting.range,
message: nls.localize('unsupportedRemoteMachineSetting', "This setting can be applied only in remote machine settings")
message: nls.localize('unsupportedRemoteMachineSetting', "This setting cannot be applied now. It will be applied when you open local window.")
});
}
}
@@ -1076,7 +1077,7 @@ class UnsupportedSettingsRenderer extends Disposable {
severity: MarkerSeverity.Hint,
tags: [MarkerTag.Unnecessary],
...setting.range,
message: nls.localize('unsupportedMachineSetting', "This setting can be applied only in user settings")
message: nls.localize('unsupportedMachineSetting', "This setting can only be applied in user settings in local window or in remote settings in remote window.")
};
}
@@ -1090,7 +1091,7 @@ class UnsupportedSettingsRenderer extends Disposable {
class WorkspaceConfigurationRenderer extends Disposable {
private decorationIds: string[] = [];
private associatedSettingsEditorModel: IPreferencesEditorModel<ISetting>;
private associatedSettingsEditorModel!: IPreferencesEditorModel<ISetting>;
private renderingDelayer: Delayer<void> = new Delayer<void>(200);
constructor(private editor: ICodeEditor, private workspaceSettingsEditorModel: SettingsEditorModel,

View File

@@ -33,7 +33,7 @@ export interface IEndpointDetails {
}
export class PreferencesSearchService extends Disposable implements IPreferencesSearchService {
_serviceBrand: any;
_serviceBrand: undefined;
private _installedExtensions: Promise<ILocalExtension[]>;

View File

@@ -33,14 +33,15 @@ import { IWorkspaceContextService, IWorkspaceFolder, WorkbenchState } from 'vs/p
import { PANEL_ACTIVE_TITLE_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND, PANEL_INACTIVE_TITLE_FOREGROUND } from 'vs/workbench/common/theme';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { ISettingsGroup } from 'vs/workbench/services/preferences/common/preferences';
import { EditorOption } from 'vs/editor/common/config/editorOptions';
export class SettingsHeaderWidget extends Widget implements IViewZone {
private id: string;
private _domNode: HTMLElement;
private id!: string;
private _domNode!: HTMLElement;
protected titleContainer: HTMLElement;
private messageElement: HTMLElement;
protected titleContainer!: HTMLElement;
private messageElement!: HTMLElement;
constructor(protected editor: ICodeEditor, private title: string) {
super();
@@ -84,9 +85,10 @@ export class SettingsHeaderWidget extends Widget implements IViewZone {
}
private layout(): void {
const configuration = this.editor.getConfiguration();
this.titleContainer.style.fontSize = configuration.fontInfo.fontSize + 'px';
if (!configuration.contribInfo.folding) {
const options = this.editor.getOptions();
const fontInfo = options.get(EditorOption.fontInfo);
this.titleContainer.style.fontSize = fontInfo.fontSize + 'px';
if (!options.get(EditorOption.folding)) {
this.titleContainer.style.paddingLeft = '6px';
}
}
@@ -121,18 +123,18 @@ export class DefaultSettingsHeaderWidget extends SettingsHeaderWidget {
export class SettingsGroupTitleWidget extends Widget implements IViewZone {
private id: string;
private _afterLineNumber: number;
private _domNode: HTMLElement;
private id!: string;
private _afterLineNumber!: number;
private _domNode!: HTMLElement;
private titleContainer: HTMLElement;
private icon: HTMLElement;
private title: HTMLElement;
private titleContainer!: HTMLElement;
private icon!: HTMLElement;
private title!: HTMLElement;
private _onToggled = this._register(new Emitter<boolean>());
readonly onToggled: Event<boolean> = this._onToggled.event;
private previousPosition: Position;
private previousPosition: Position | null = null;
constructor(private editor: ICodeEditor, public settingsGroup: ISettingsGroup) {
super();
@@ -199,17 +201,18 @@ export class SettingsGroupTitleWidget extends Widget implements IViewZone {
}
private layout(): void {
const configuration = this.editor.getConfiguration();
const options = this.editor.getOptions();
const fontInfo = options.get(EditorOption.fontInfo);
const layoutInfo = this.editor.getLayoutInfo();
this._domNode.style.width = layoutInfo.contentWidth - layoutInfo.verticalScrollbarWidth + 'px';
this.titleContainer.style.lineHeight = configuration.lineHeight + 3 + 'px';
this.titleContainer.style.height = configuration.lineHeight + 3 + 'px';
this.titleContainer.style.fontSize = configuration.fontInfo.fontSize + 'px';
this.titleContainer.style.lineHeight = options.get(EditorOption.lineHeight) + 3 + 'px';
this.titleContainer.style.height = options.get(EditorOption.lineHeight) + 3 + 'px';
this.titleContainer.style.fontSize = fontInfo.fontSize + 'px';
this.icon.style.minWidth = `${this.getIconSize(16)}px`;
}
private getIconSize(minSize: number): number {
const fontSize = this.editor.getConfiguration().fontInfo.fontSize;
const fontSize = this.editor.getOption(EditorOption.fontInfo).fontSize;
return fontSize > 8 ? Math.max(fontSize, minSize) : 12;
}
@@ -296,11 +299,11 @@ export class FolderSettingsActionViewItem extends BaseActionViewItem {
private _folder: IWorkspaceFolder | null;
private _folderSettingCounts = new Map<string, number>();
private container: HTMLElement;
private anchorElement: HTMLElement;
private labelElement: HTMLElement;
private detailsElement: HTMLElement;
private dropDownElement: HTMLElement;
private container!: HTMLElement;
private anchorElement!: HTMLElement;
private labelElement!: HTMLElement;
private detailsElement!: HTMLElement;
private dropDownElement!: HTMLElement;
constructor(
action: IAction,
@@ -391,11 +394,7 @@ export class FolderSettingsActionViewItem extends BaseActionViewItem {
this.update();
if (this._action.checked) {
if ((oldFolder || !this._folder)
|| (!oldFolder || this._folder)
|| (oldFolder && this._folder && (oldFolder as IWorkspaceFolder).uri.toString() === (this._folder as IWorkspaceFolder).uri.toString())) {
this._action.run(this._folder);
}
this._action.run(this._folder);
}
}
@@ -468,14 +467,14 @@ export interface ISettingsTargetsWidgetOptions {
export class SettingsTargetsWidget extends Widget {
private settingsSwitcherBar: ActionBar;
private userLocalSettings: Action;
private userRemoteSettings: Action;
private workspaceSettings: Action;
private folderSettings: FolderSettingsActionViewItem;
private settingsSwitcherBar!: ActionBar;
private userLocalSettings!: Action;
private userRemoteSettings!: Action;
private workspaceSettings!: Action;
private folderSettings!: FolderSettingsActionViewItem;
private options: ISettingsTargetsWidgetOptions;
private _settingsTarget: SettingsTarget;
private _settingsTarget: SettingsTarget | null = null;
private readonly _onDidTargetChange = this._register(new Emitter<SettingsTarget>());
readonly onDidTargetChange: Event<SettingsTarget> = this._onDidTargetChange.event;
@@ -517,7 +516,8 @@ export class SettingsTargetsWidget extends Widget {
this.workspaceSettings = new Action('workspaceSettings', localize('workspaceSettings', "Workspace"), '.settings-tab', false, () => this.updateTarget(ConfigurationTarget.WORKSPACE));
this.workspaceSettings.tooltip = this.workspaceSettings.label;
const folderSettingsAction = new Action('folderSettings', localize('folderSettings', "Folder"), '.settings-tab', false, (folder: IWorkspaceFolder) => this.updateTarget(folder.uri));
const folderSettingsAction = new Action('folderSettings', localize('folderSettings', "Folder"), '.settings-tab', false,
(folder: IWorkspaceFolder | null) => this.updateTarget(folder ? folder.uri : ConfigurationTarget.USER_LOCAL));
this.folderSettings = this.instantiationService.createInstance(FolderSettingsActionViewItem, folderSettingsAction);
this.update();
@@ -525,11 +525,11 @@ export class SettingsTargetsWidget extends Widget {
this.settingsSwitcherBar.push([this.userLocalSettings, this.userRemoteSettings, this.workspaceSettings, folderSettingsAction]);
}
get settingsTarget(): SettingsTarget {
get settingsTarget(): SettingsTarget | null {
return this._settingsTarget;
}
set settingsTarget(settingsTarget: SettingsTarget) {
set settingsTarget(settingsTarget: SettingsTarget | null) {
this._settingsTarget = settingsTarget;
this.userLocalSettings.checked = ConfigurationTarget.USER_LOCAL === this.settingsTarget;
this.userRemoteSettings.checked = ConfigurationTarget.USER_REMOTE === this.settingsTarget;
@@ -602,12 +602,12 @@ export interface SearchOptions extends IInputOptions {
export class SearchWidget extends Widget {
domNode: HTMLElement;
domNode!: HTMLElement;
private countElement: HTMLElement;
private searchContainer: HTMLElement;
inputBox: InputBox;
private controlsDiv: HTMLElement;
private countElement!: HTMLElement;
private searchContainer!: HTMLElement;
inputBox!: InputBox;
private controlsDiv!: HTMLElement;
private readonly _onDidChange: Emitter<string> = this._register(new Emitter<string>());
readonly onDidChange: Event<string> = this._onDidChange.event;
@@ -739,8 +739,8 @@ export class EditPreferenceWidget<T> extends Disposable {
static readonly GLYPH_MARGIN_CLASS_NAME = 'edit-preferences-widget';
private _line: number;
private _preferences: T[];
private _line: number = -1;
private _preferences: T[] = [];
private _editPreferenceDecoration: string[];

View File

@@ -88,54 +88,55 @@ export class SettingsEditor2 extends BaseEditor {
type === SettingValueType.Exclude;
}
private defaultSettingsEditorModel: Settings2EditorModel;
// (!) Lots of props that are set once on the first render
private defaultSettingsEditorModel!: Settings2EditorModel;
private rootElement: HTMLElement;
private headerContainer: HTMLElement;
private searchWidget: SuggestEnabledInput;
private countElement: HTMLElement;
private settingsTargetsWidget: SettingsTargetsWidget;
private rootElement!: HTMLElement;
private headerContainer!: HTMLElement;
private searchWidget!: SuggestEnabledInput;
private countElement!: HTMLElement;
private settingsTargetsWidget!: SettingsTargetsWidget;
private settingsTreeContainer: HTMLElement;
private settingsTree: SettingsTree;
private settingRenderers: SettingTreeRenderers;
private tocTreeModel: TOCTreeModel;
private settingsTreeModel: SettingsTreeModel;
private noResultsMessage: HTMLElement;
private clearFilterLinkContainer: HTMLElement;
private settingsTreeContainer!: HTMLElement;
private settingsTree!: SettingsTree;
private settingRenderers!: SettingTreeRenderers;
private tocTreeModel!: TOCTreeModel;
private settingsTreeModel!: SettingsTreeModel;
private noResultsMessage!: HTMLElement;
private clearFilterLinkContainer!: HTMLElement;
private tocTreeContainer: HTMLElement;
private tocTree: TOCTree;
private tocTreeContainer!: HTMLElement;
private tocTree!: TOCTree;
private settingsAriaExtraLabelsContainer: HTMLElement;
private settingsAriaExtraLabelsContainer!: HTMLElement;
private delayedFilterLogging: Delayer<void>;
private localSearchDelayer: Delayer<void>;
private remoteSearchThrottle: ThrottledDelayer<void>;
private searchInProgress: CancellationTokenSource | null;
private searchInProgress: CancellationTokenSource | null = null;
private settingFastUpdateDelayer: Delayer<void>;
private settingSlowUpdateDelayer: Delayer<void>;
private pendingSettingUpdate: { key: string, value: any } | null;
private pendingSettingUpdate: { key: string, value: any } | null = null;
private readonly viewState: ISettingsEditorViewState;
private _searchResultModel: SearchResultModel | null;
private _searchResultModel: SearchResultModel | null = null;
private tocRowFocused: IContextKey<boolean>;
private inSettingsEditorContextKey: IContextKey<boolean>;
private searchFocusContextKey: IContextKey<boolean>;
private scheduledRefreshes: Map<string, DOM.IFocusTracker>;
private lastFocusedSettingElement: string;
private lastFocusedSettingElement: string | null = null;
/** Don't spam warnings */
private hasWarnedMissingSettings: boolean;
private hasWarnedMissingSettings = false;
private editorMemento: IEditorMemento<ISettingsEditor2State>;
private tocFocusedElement: SettingsTreeGroupElement | null;
private tocFocusedElement: SettingsTreeGroupElement | null = null;
private settingsTreeScrollTop = 0;
private dimension: DOM.Dimension;
private dimension!: DOM.Dimension;
constructor(
@ITelemetryService telemetryService: ITelemetryService,
@@ -210,7 +211,7 @@ export class SettingsEditor2 extends BaseEditor {
this.updateStyles();
}
setInput(input: SettingsEditor2Input, options: SettingsEditorOptions | null, token: CancellationToken): Promise<void> {
setInput(input: SettingsEditor2Input, options: SettingsEditorOptions | undefined, token: CancellationToken): Promise<void> {
this.inSettingsEditorContextKey.set(true);
return super.setInput(input, options, token)
.then(() => timeout(0)) // Force setInput to be async
@@ -253,7 +254,7 @@ export class SettingsEditor2 extends BaseEditor {
}
}
setOptions(options: SettingsEditorOptions | null): void {
setOptions(options: SettingsEditorOptions | undefined): void {
super.setOptions(options);
if (options) {
@@ -391,10 +392,10 @@ export class SettingsEditor2 extends BaseEditor {
return SettingsEditor2.SUGGESTIONS.filter(tag => query.indexOf(tag) === -1).map(tag => strings.endsWith(tag, ':') ? tag : tag + ' ');
}
}, searchBoxLabel, 'settingseditor:searchinput' + SettingsEditor2.NUM_INSTANCES++, {
placeholderText: searchBoxLabel,
focusContextKey: this.searchFocusContextKey,
// TODO: Aria-live
})
placeholderText: searchBoxLabel,
focusContextKey: this.searchFocusContextKey,
// TODO: Aria-live
})
);
this._register(this.searchWidget.onFocus(() => {
@@ -471,7 +472,7 @@ export class SettingsEditor2 extends BaseEditor {
return this.openSettingsFile(query.query);
}
private openSettingsFile(query?: string): Promise<IEditor | undefined> {
private async openSettingsFile(query?: string): Promise<IEditor | undefined> {
const currentSettingsTarget = this.settingsTargetsWidget.settingsTarget;
const options: ISettingsEditorOptions = { query };
@@ -481,9 +482,11 @@ export class SettingsEditor2 extends BaseEditor {
return this.preferencesService.openRemoteSettings();
} else if (currentSettingsTarget === ConfigurationTarget.WORKSPACE) {
return this.preferencesService.openWorkspaceSettings(true, options);
} else {
} else if (URI.isUri(currentSettingsTarget)) {
return this.preferencesService.openFolderSettings(currentSettingsTarget, true, options);
}
return undefined;
}
private createBody(parent: HTMLElement): void {

View File

@@ -1469,7 +1469,7 @@ export class SettingsTree extends ObjectTree<SettingsTreeElement> {
) {
const treeClass = 'settings-editor-tree';
super(container,
super('SettingsTree', container,
new SettingsTreeDelegate(),
renderers,
{
@@ -1556,8 +1556,8 @@ export class SettingsTree extends ObjectTree<SettingsTreeElement> {
}));
}
protected createModel(view: ISpliceable<ITreeNode<SettingsTreeGroupChild>>, options: IObjectTreeOptions<SettingsTreeGroupChild>): ITreeModel<SettingsTreeGroupChild | null, void, SettingsTreeGroupChild | null> {
return new NonCollapsibleObjectTreeModel<SettingsTreeGroupChild>(view, options);
protected createModel(user: string, view: ISpliceable<ITreeNode<SettingsTreeGroupChild>>, options: IObjectTreeOptions<SettingsTreeGroupChild>): ITreeModel<SettingsTreeGroupChild | null, void, SettingsTreeGroupChild | null> {
return new NonCollapsibleObjectTreeModel<SettingsTreeGroupChild>(user, view, options);
}
}

View File

@@ -33,6 +33,11 @@ export abstract class SettingsTreeElement {
* Index assigned in display order, used for paging.
*/
index: number;
constructor(_id: string, _index: number) {
this.id = _id;
this.index = _index;
}
}
export type SettingsTreeGroupChild = (SettingsTreeGroupElement | SettingsTreeSettingElement | SettingsTreeNewExtensionsElement);
@@ -43,8 +48,8 @@ export class SettingsTreeGroupElement extends SettingsTreeElement {
level: number;
isFirstGroup: boolean;
private _childSettingKeys: Set<string>;
private _children: SettingsTreeGroupChild[];
private _childSettingKeys: Set<string> = new Set();
private _children: SettingsTreeGroupChild[] = [];
get children(): SettingsTreeGroupChild[] {
return this._children;
@@ -61,6 +66,15 @@ export class SettingsTreeGroupElement extends SettingsTreeElement {
});
}
constructor(_id: string, _index: number, count: number | undefined, label: string, level: number, isFirstGroup: boolean) {
super(_id, _index);
this.count = count;
this.label = label;
this.level = level;
this.isFirstGroup = isFirstGroup;
}
/**
* Returns whether this group contains the given child key (to a depth of 1 only)
*/
@@ -70,7 +84,9 @@ export class SettingsTreeGroupElement extends SettingsTreeElement {
}
export class SettingsTreeNewExtensionsElement extends SettingsTreeElement {
extensionIds: string[];
constructor(_id: string, _index: number, public readonly extensionIds: string[]) {
super(_id, _index);
}
}
export class SettingsTreeSettingElement extends SettingsTreeElement {
@@ -78,8 +94,8 @@ export class SettingsTreeSettingElement extends SettingsTreeElement {
setting: ISetting;
private _displayCategory: string;
private _displayLabel: string;
private _displayCategory: string | null = null;
private _displayLabel: string | null = null;
/**
* scopeValue || defaultValue, for rendering convenience.
@@ -99,19 +115,17 @@ export class SettingsTreeSettingElement extends SettingsTreeElement {
/**
* Whether the setting is configured in the selected scope.
*/
isConfigured: boolean;
isConfigured = false;
tags?: Set<string>;
overriddenScopeList: string[];
description: string;
valueType: SettingValueType;
overriddenScopeList: string[] = [];
description!: string;
valueType!: SettingValueType;
constructor(setting: ISetting, parent: SettingsTreeGroupElement, index: number, inspectResult: IInspectResult) {
super();
this.index = index;
super(sanitizeId(parent.id + '_' + setting.key), index);
this.setting = setting;
this.parent = parent;
this.id = sanitizeId(parent.id + '_' + setting.key);
this.update(inspectResult);
}
@@ -121,7 +135,7 @@ export class SettingsTreeSettingElement extends SettingsTreeElement {
this.initLabel();
}
return this._displayCategory;
return this._displayCategory!;
}
get displayLabel(): string {
@@ -129,7 +143,7 @@ export class SettingsTreeSettingElement extends SettingsTreeElement {
this.initLabel();
}
return this._displayLabel;
return this._displayLabel!;
}
private initLabel(): void {
@@ -270,10 +284,10 @@ export class SettingsTreeSettingElement extends SettingsTreeElement {
}
export class SettingsTreeModel {
protected _root: SettingsTreeGroupElement;
protected _root!: SettingsTreeGroupElement;
protected _treeElementsById = new Map<string, SettingsTreeElement>();
private _treeElementsBySettingName = new Map<string, SettingsTreeSettingElement[]>();
private _tocRoot: ITOCEntry;
private _tocRoot!: ITOCEntry;
constructor(
protected _viewState: ISettingsEditorViewState,
@@ -320,13 +334,10 @@ export class SettingsTreeModel {
}
private createSettingsTreeGroupElement(tocEntry: ITOCEntry, parent?: SettingsTreeGroupElement): SettingsTreeGroupElement {
const element = new SettingsTreeGroupElement();
const index = this._treeElementsById.size;
element.index = index;
element.id = tocEntry.id;
element.label = tocEntry.label;
element.parent = parent;
element.level = this.getDepth(element);
const depth = parent ? this.getDepth(parent) + 1 : 0;
const element = new SettingsTreeGroupElement(tocEntry.id, index, undefined, tocEntry.label, depth, false);
const children: SettingsTreeGroupChild[] = [];
if (tocEntry.settings) {
@@ -482,9 +493,9 @@ export const enum SearchResultIdx {
}
export class SearchResultModel extends SettingsTreeModel {
private rawSearchResults: ISearchResult[];
private cachedUniqueSearchResults: ISearchResult[] | undefined;
private newExtensionSearchResults: ISearchResult;
private rawSearchResults: ISearchResult[] | null = null;
private cachedUniqueSearchResults: ISearchResult[] | null = null;
private newExtensionSearchResults: ISearchResult | null = null;
readonly id = 'searchResultModel';
@@ -526,11 +537,11 @@ export class SearchResultModel extends SettingsTreeModel {
}
getRawResults(): ISearchResult[] {
return this.rawSearchResults;
return this.rawSearchResults || [];
}
setResult(order: SearchResultIdx, result: ISearchResult | null): void {
this.cachedUniqueSearchResults = undefined;
this.cachedUniqueSearchResults = null;
this.rawSearchResults = this.rawSearchResults || [];
if (!result) {
delete this.rawSearchResults[order];
@@ -554,17 +565,14 @@ export class SearchResultModel extends SettingsTreeModel {
.filter(child => child instanceof SettingsTreeSettingElement && child.matchesAllTags(this._viewState.tagFilters) && child.matchesScope(this._viewState.settingsTarget, isRemote) && child.matchesAnyExtension(this._viewState.extensionFilters));
if (this.newExtensionSearchResults && this.newExtensionSearchResults.filterMatches.length) {
const newExtElement = new SettingsTreeNewExtensionsElement();
newExtElement.index = this._treeElementsById.size;
newExtElement.parent = this._root;
newExtElement.id = 'newExtensions';
this._treeElementsById.set(newExtElement.id, newExtElement);
const resultExtensionIds = this.newExtensionSearchResults.filterMatches
.map(result => (<IExtensionSetting>result.setting))
.filter(setting => setting.extensionName && setting.extensionPublisher)
.map(setting => `${setting.extensionPublisher}.${setting.extensionName}`);
newExtElement.extensionIds = arrays.distinct(resultExtensionIds);
const newExtElement = new SettingsTreeNewExtensionsElement('newExtensions', this._treeElementsById.size, arrays.distinct(resultExtensionIds));
newExtElement.parent = this._root;
this._treeElementsById.set(newExtElement.id, newExtElement);
this._root.children.push(newExtElement);
}
}

View File

@@ -136,8 +136,8 @@ type EditKey = 'none' | 'create' | number;
export class ListSettingListModel {
private _dataItems: IListDataItem[] = [];
private _editKey: EditKey;
private _selectedIdx: number | null;
private _editKey: EditKey | null = null;
private _selectedIdx: number | null = null;
get items(): IListViewItem[] {
const items = this._dataItems.map((item, i) => {
@@ -457,6 +457,7 @@ export class ListSettingWidget extends Disposable {
onSubmit(false);
e.preventDefault();
}
rowElement.focus();
};
const valueInput = new InputBox(rowElement, this.contextViewService, {

View File

@@ -23,8 +23,8 @@ const $ = DOM.$;
export class TOCTreeModel {
private _currentSearchModel: SearchResultModel | null;
private _settingsTreeRoot: SettingsTreeGroupElement;
private _currentSearchModel: SearchResultModel | null = null;
private _settingsTreeRoot!: SettingsTreeGroupElement;
constructor(
private _viewState: ISettingsEditorViewState,
@@ -204,7 +204,7 @@ export class TOCTree extends ObjectTree<SettingsTreeGroupElement> {
collapseByDefault: true
};
super(container,
super('SettingsTOC', container,
new TOCTreeDelegate(),
[new TOCRenderer()],
options);