From cb0af8225a6ecbb3419b3d953c984d51cfabf855 Mon Sep 17 00:00:00 2001 From: pkoushik Date: Thu, 15 Nov 2018 12:16:23 +0530 Subject: [PATCH 1/2] fix-62365 : Added useGlobalStorageForSuggestions Setting --- src/vs/editor/common/config/commonEditorConfig.ts | 5 +++++ src/vs/editor/common/config/editorOptions.ts | 13 +++++++++++-- src/vs/editor/contrib/suggest/suggestMemory.ts | 8 ++++---- .../contrib/suggest/test/completionModel.test.ts | 6 +++--- src/vs/monaco.d.ts | 5 +++++ 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts index 190862e8bd0..2f3ecf3ca36 100644 --- a/src/vs/editor/common/config/commonEditorConfig.ts +++ b/src/vs/editor/common/config/commonEditorConfig.ts @@ -639,6 +639,11 @@ const editorConfiguration: IConfigurationNode = { default: false, description: nls.localize('suggest.localityBonus', "Controls whether sorting favours words that appear close to the cursor.") }, + 'editor.suggest.useGlobalStorageForSuggestions': { + type: 'boolean', + default: false, + description: nls.localize('suggest.useGlobalStorageForSuggestions', "Controls whether global storage is used for remembering suggestions.") + }, 'editor.suggest.snippetsPreventQuickSuggestions': { type: 'boolean', default: true, diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts index cc3971d0b35..ed5c4936794 100644 --- a/src/vs/editor/common/config/editorOptions.ts +++ b/src/vs/editor/common/config/editorOptions.ts @@ -194,6 +194,11 @@ export interface ISuggestOptions { * Favours words that appear close to the cursor. */ localityBonus?: boolean; + + /** + * Enable using global storage for remembering suggestions. + */ + useGlobalStorageForSuggestions?: boolean; } /** @@ -900,6 +905,7 @@ export interface InternalSuggestOptions { readonly snippets: 'top' | 'bottom' | 'inline' | 'none'; readonly snippetsPreventQuickSuggestions: boolean; readonly localityBonus: boolean; + readonly useGlobalStorageForSuggestions: boolean; } export interface InternalParameterHintOptions { @@ -1346,7 +1352,8 @@ export class InternalEditorOptions { return a.filterGraceful === b.filterGraceful && a.snippets === b.snippets && a.snippetsPreventQuickSuggestions === b.snippetsPreventQuickSuggestions - && a.localityBonus === b.localityBonus; + && a.localityBonus === b.localityBonus + && a.useGlobalStorageForSuggestions === b.useGlobalStorageForSuggestions; } } @@ -1877,6 +1884,7 @@ export class EditorOptionsValidator { snippets: _stringSet<'top' | 'bottom' | 'inline' | 'none'>(opts.snippetSuggestions, defaults.snippets, ['top', 'bottom', 'inline', 'none']), snippetsPreventQuickSuggestions: _boolean(suggestOpts.snippetsPreventQuickSuggestions, defaults.filterGraceful), localityBonus: _boolean(suggestOpts.localityBonus, defaults.localityBonus), + useGlobalStorageForSuggestions: _boolean(suggestOpts.useGlobalStorageForSuggestions, defaults.useGlobalStorageForSuggestions) }; } @@ -2625,7 +2633,8 @@ export const EDITOR_DEFAULTS: IValidatedEditorOptions = { filterGraceful: true, snippets: 'inline', snippetsPreventQuickSuggestions: true, - localityBonus: false + localityBonus: false, + useGlobalStorageForSuggestions: false }, selectionHighlight: true, occurrencesHighlight: true, diff --git a/src/vs/editor/contrib/suggest/suggestMemory.ts b/src/vs/editor/contrib/suggest/suggestMemory.ts index 1f92895395f..efa9fd0becb 100644 --- a/src/vs/editor/contrib/suggest/suggestMemory.ts +++ b/src/vs/editor/contrib/suggest/suggestMemory.ts @@ -206,12 +206,12 @@ export class SuggestMemories extends Disposable { ) { super(); - this._setMode(editor.getConfiguration().contribInfo.suggestSelection); - this._register(editor.onDidChangeConfiguration(e => e.contribInfo && this._setMode(editor.getConfiguration().contribInfo.suggestSelection))); + this._setMode(editor.getConfiguration().contribInfo.suggestSelection, editor.getConfiguration().contribInfo.suggest.useGlobalStorageForSuggestions); + this._register(editor.onDidChangeConfiguration(e => e.contribInfo && this._setMode(editor.getConfiguration().contribInfo.suggestSelection, editor.getConfiguration().contribInfo.suggest.useGlobalStorageForSuggestions))); this._register(_storageService.onWillSaveState(() => this._saveState())); } - private _setMode(mode: MemMode): void { + private _setMode(mode: MemMode, useGlobalStorageForSuggestions: boolean): void { if (this._mode === mode) { return; } @@ -219,7 +219,7 @@ export class SuggestMemories extends Disposable { this._strategy = mode === 'recentlyUsedByPrefix' ? new PrefixMemory() : mode === 'recentlyUsed' ? new LRUMemory() : new NoMemory(); try { - const raw = this._storageService.get(`${this._storagePrefix}/${this._mode}`, StorageScope.WORKSPACE); + const raw = useGlobalStorageForSuggestions ? this._storageService.get(`${this._storagePrefix}/${this._mode}`, StorageScope.GLOBAL) : this._storageService.get(`${this._storagePrefix}/${this._mode}`, StorageScope.WORKSPACE); if (raw) { this._strategy.fromJSON(JSON.parse(raw)); } diff --git a/src/vs/editor/contrib/suggest/test/completionModel.test.ts b/src/vs/editor/contrib/suggest/test/completionModel.test.ts index 7fff6830da0..4188c2ccd4c 100644 --- a/src/vs/editor/contrib/suggest/test/completionModel.test.ts +++ b/src/vs/editor/contrib/suggest/test/completionModel.test.ts @@ -165,7 +165,7 @@ suite('CompletionModel', function () { ], 1, { leadingLineContent: 's', characterCountDelta: 0 - }, WordDistance.None, { snippets: 'top', snippetsPreventQuickSuggestions: true, filterGraceful: true, localityBonus: false }); + }, WordDistance.None, { snippets: 'top', snippetsPreventQuickSuggestions: true, filterGraceful: true, localityBonus: false, useGlobalStorageForSuggestions: false }); assert.equal(model.items.length, 2); const [a, b] = model.items; @@ -184,7 +184,7 @@ suite('CompletionModel', function () { ], 1, { leadingLineContent: 's', characterCountDelta: 0 - }, WordDistance.None, { snippets: 'bottom', snippetsPreventQuickSuggestions: true, filterGraceful: true, localityBonus: false }); + }, WordDistance.None, { snippets: 'bottom', snippetsPreventQuickSuggestions: true, filterGraceful: true, localityBonus: false, useGlobalStorageForSuggestions: false }); assert.equal(model.items.length, 2); const [a, b] = model.items; @@ -202,7 +202,7 @@ suite('CompletionModel', function () { ], 1, { leadingLineContent: 's', characterCountDelta: 0 - }, WordDistance.None, { snippets: 'inline', snippetsPreventQuickSuggestions: true, filterGraceful: true, localityBonus: false }); + }, WordDistance.None, { snippets: 'inline', snippetsPreventQuickSuggestions: true, filterGraceful: true, localityBonus: false, useGlobalStorageForSuggestions: false }); assert.equal(model.items.length, 2); const [a, b] = model.items; diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 54a6804c68d..c1e4fd10d38 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -2558,6 +2558,10 @@ declare namespace monaco.editor { * Favours words that appear close to the cursor. */ localityBonus?: boolean; + /** + * Enable using global storage for remembering suggestions. + */ + useGlobalStorageForSuggestions?: boolean; } /** @@ -3193,6 +3197,7 @@ declare namespace monaco.editor { readonly snippets: 'top' | 'bottom' | 'inline' | 'none'; readonly snippetsPreventQuickSuggestions: boolean; readonly localityBonus: boolean; + readonly useGlobalStorageForSuggestions: boolean; } export interface InternalParameterHintOptions { From 2fa8128d52c96df3d392c27a918f5f1ad534c225 Mon Sep 17 00:00:00 2001 From: pkoushik Date: Thu, 15 Nov 2018 17:52:17 +0530 Subject: [PATCH 2/2] fix-62365 : _saveState function handled --- src/vs/editor/contrib/suggest/suggestMemory.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/contrib/suggest/suggestMemory.ts b/src/vs/editor/contrib/suggest/suggestMemory.ts index efa9fd0becb..bb6a391b482 100644 --- a/src/vs/editor/contrib/suggest/suggestMemory.ts +++ b/src/vs/editor/contrib/suggest/suggestMemory.ts @@ -208,7 +208,7 @@ export class SuggestMemories extends Disposable { this._setMode(editor.getConfiguration().contribInfo.suggestSelection, editor.getConfiguration().contribInfo.suggest.useGlobalStorageForSuggestions); this._register(editor.onDidChangeConfiguration(e => e.contribInfo && this._setMode(editor.getConfiguration().contribInfo.suggestSelection, editor.getConfiguration().contribInfo.suggest.useGlobalStorageForSuggestions))); - this._register(_storageService.onWillSaveState(() => this._saveState())); + this._register(_storageService.onWillSaveState(() => this._saveState(editor.getConfiguration().contribInfo.suggest.useGlobalStorageForSuggestions))); } private _setMode(mode: MemMode, useGlobalStorageForSuggestions: boolean): void { @@ -236,8 +236,8 @@ export class SuggestMemories extends Disposable { return this._strategy.select(model, pos, items); } - private _saveState() { + private _saveState(useGlobalStorageForSuggestions: boolean) { const raw = JSON.stringify(this._strategy); - this._storageService.store(`${this._storagePrefix}/${this._mode}`, raw, StorageScope.WORKSPACE); + useGlobalStorageForSuggestions ? this._storageService.store(`${this._storagePrefix}/${this._mode}`, raw, StorageScope.GLOBAL) : this._storageService.store(`${this._storagePrefix}/${this._mode}`, raw, StorageScope.WORKSPACE); } }