| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- export class EditorSettingMigration {
- constructor(key, migrate) {
- this.key = key;
- this.migrate = migrate;
- }
- apply(options) {
- const value = EditorSettingMigration._read(options, this.key);
- const read = (key) => EditorSettingMigration._read(options, key);
- const write = (key, value) => EditorSettingMigration._write(options, key, value);
- this.migrate(value, read, write);
- }
- static _read(source, key) {
- if (typeof source === 'undefined') {
- return undefined;
- }
- const firstDotIndex = key.indexOf('.');
- if (firstDotIndex >= 0) {
- const firstSegment = key.substring(0, firstDotIndex);
- return this._read(source[firstSegment], key.substring(firstDotIndex + 1));
- }
- return source[key];
- }
- static _write(target, key, value) {
- const firstDotIndex = key.indexOf('.');
- if (firstDotIndex >= 0) {
- const firstSegment = key.substring(0, firstDotIndex);
- target[firstSegment] = target[firstSegment] || {};
- this._write(target[firstSegment], key.substring(firstDotIndex + 1), value);
- return;
- }
- target[key] = value;
- }
- }
- EditorSettingMigration.items = [];
- function registerEditorSettingMigration(key, migrate) {
- EditorSettingMigration.items.push(new EditorSettingMigration(key, migrate));
- }
- function registerSimpleEditorSettingMigration(key, values) {
- registerEditorSettingMigration(key, (value, read, write) => {
- if (typeof value !== 'undefined') {
- for (const [oldValue, newValue] of values) {
- if (value === oldValue) {
- write(key, newValue);
- return;
- }
- }
- }
- });
- }
- /**
- * Compatibility with old options
- */
- export function migrateOptions(options) {
- EditorSettingMigration.items.forEach(migration => migration.apply(options));
- }
- registerSimpleEditorSettingMigration('wordWrap', [[true, 'on'], [false, 'off']]);
- registerSimpleEditorSettingMigration('lineNumbers', [[true, 'on'], [false, 'off']]);
- registerSimpleEditorSettingMigration('cursorBlinking', [['visible', 'solid']]);
- registerSimpleEditorSettingMigration('renderWhitespace', [[true, 'boundary'], [false, 'none']]);
- registerSimpleEditorSettingMigration('renderLineHighlight', [[true, 'line'], [false, 'none']]);
- registerSimpleEditorSettingMigration('acceptSuggestionOnEnter', [[true, 'on'], [false, 'off']]);
- registerSimpleEditorSettingMigration('tabCompletion', [[false, 'off'], [true, 'onlySnippets']]);
- registerSimpleEditorSettingMigration('hover', [[true, { enabled: true }], [false, { enabled: false }]]);
- registerSimpleEditorSettingMigration('parameterHints', [[true, { enabled: true }], [false, { enabled: false }]]);
- registerSimpleEditorSettingMigration('autoIndent', [[false, 'advanced'], [true, 'full']]);
- registerSimpleEditorSettingMigration('matchBrackets', [[true, 'always'], [false, 'never']]);
- registerEditorSettingMigration('autoClosingBrackets', (value, read, write) => {
- if (value === false) {
- write('autoClosingBrackets', 'never');
- if (typeof read('autoClosingQuotes') === 'undefined') {
- write('autoClosingQuotes', 'never');
- }
- if (typeof read('autoSurround') === 'undefined') {
- write('autoSurround', 'never');
- }
- }
- });
- registerEditorSettingMigration('renderIndentGuides', (value, read, write) => {
- if (typeof value !== 'undefined') {
- write('renderIndentGuides', undefined);
- if (typeof read('guides.indentation') === 'undefined') {
- write('guides.indentation', !!value);
- }
- }
- });
- registerEditorSettingMigration('highlightActiveIndentGuide', (value, read, write) => {
- if (typeof value !== 'undefined') {
- write('highlightActiveIndentGuide', undefined);
- if (typeof read('guides.highlightActiveIndentation') === 'undefined') {
- write('guides.highlightActiveIndentation', !!value);
- }
- }
- });
- const suggestFilteredTypesMapping = {
- method: 'showMethods',
- function: 'showFunctions',
- constructor: 'showConstructors',
- deprecated: 'showDeprecated',
- field: 'showFields',
- variable: 'showVariables',
- class: 'showClasses',
- struct: 'showStructs',
- interface: 'showInterfaces',
- module: 'showModules',
- property: 'showProperties',
- event: 'showEvents',
- operator: 'showOperators',
- unit: 'showUnits',
- value: 'showValues',
- constant: 'showConstants',
- enum: 'showEnums',
- enumMember: 'showEnumMembers',
- keyword: 'showKeywords',
- text: 'showWords',
- color: 'showColors',
- file: 'showFiles',
- reference: 'showReferences',
- folder: 'showFolders',
- typeParameter: 'showTypeParameters',
- snippet: 'showSnippets',
- };
- registerEditorSettingMigration('suggest.filteredTypes', (value, read, write) => {
- if (value && typeof value === 'object') {
- for (const entry of Object.entries(suggestFilteredTypesMapping)) {
- const v = value[entry[0]];
- if (v === false) {
- if (typeof read(`suggest.${entry[1]}`) === 'undefined') {
- write(`suggest.${entry[1]}`, false);
- }
- }
- }
- write('suggest.filteredTypes', undefined);
- }
- });
- registerEditorSettingMigration('quickSuggestions', (input, read, write) => {
- if (typeof input === 'boolean') {
- const value = input ? 'on' : 'off';
- const newValue = { comments: value, strings: value, other: value };
- write('quickSuggestions', newValue);
- }
- });
|