From 7d1ed7d20061ccd530c120a35ae14c5763486989 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sun, 14 Jan 2018 04:49:54 +0300 Subject: [PATCH 01/15] Prefill quick open with selection --- .../parts/quickopen/quickOpenController.ts | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index a3720fad8dbe5..3ed01b320b2f0 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -55,6 +55,9 @@ import { FileKind, IFileService } from 'vs/platform/files/common/files'; import { scoreItem, ScorerCache, compareItemsByScore, prepareQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer'; import { getBaseLabel } from 'vs/base/common/labels'; import { WorkbenchTree, IListService } from 'vs/platform/list/browser/listService'; +import { selectBackground } from 'vs/platform/theme/common/colorRegistry'; +import { ITextModel } from 'vs/editor/common/model'; +import { IEditor } from 'vs/editor/common/editorCommon'; const HELP_PREFIX = '?'; @@ -539,6 +542,29 @@ export class QuickOpenController extends Component implements IQuickOpenService }, 100 /* to prevent flashing, we accumulate visibility changes over a timeout of 100ms */); } + private getSelectedText(): string { + const activeEditor = this.editorService.getActiveEditor(); + const editorControl = activeEditor.getControl() as IEditor; + const selection = editorControl.getSelection(); + + let isSelection = selection ? (selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn) : false; + + if (!isSelection) { + return ''; + } + + const model = editorControl.getModel(); + + if (!('getValueInRange' in model)) { + // not interested in any other type of model, but TextModel + return ''; + } + + let selectedText = (model as ITextModel).getValueInRange(selection); + + return selectedText; + } + public show(prefix?: string, options?: IShowOptions): TPromise { let quickNavigateConfiguration = options ? options.quickNavigateConfiguration : void 0; let inputSelection = options ? options.inputSelection : void 0; @@ -584,6 +610,12 @@ export class QuickOpenController extends Component implements IQuickOpenService this.quickOpenWidget.layout(this.layoutDimensions); } + const selectedText = this.getSelectedText(); + + if (!prefix && selectedText) { + prefix = selectedText; + } + // Show quick open with prefix or editor history if (!this.quickOpenWidget.isVisible() || quickNavigateConfiguration) { if (prefix) { From bd4a8b73cbc90169230967aeb1236b630d1584b5 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sun, 14 Jan 2018 04:59:28 +0300 Subject: [PATCH 02/15] remove unused import --- src/vs/workbench/browser/parts/quickopen/quickOpenController.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index 3ed01b320b2f0..c70030f45c919 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -55,7 +55,6 @@ import { FileKind, IFileService } from 'vs/platform/files/common/files'; import { scoreItem, ScorerCache, compareItemsByScore, prepareQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer'; import { getBaseLabel } from 'vs/base/common/labels'; import { WorkbenchTree, IListService } from 'vs/platform/list/browser/listService'; -import { selectBackground } from 'vs/platform/theme/common/colorRegistry'; import { ITextModel } from 'vs/editor/common/model'; import { IEditor } from 'vs/editor/common/editorCommon'; From d4e251a472bcfe1a8f731f9f09d93f13b6a3b575 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sun, 14 Jan 2018 13:03:37 +0300 Subject: [PATCH 03/15] Handle nulls, handle multiline --- .../parts/quickopen/quickOpenController.ts | 30 +++++++++++++++---- .../services/editor/common/editorService.ts | 2 +- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index c70030f45c919..0a88d507a33dd 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -541,22 +541,40 @@ export class QuickOpenController extends Component implements IQuickOpenService }, 100 /* to prevent flashing, we accumulate visibility changes over a timeout of 100ms */); } - private getSelectedText(): string { + private getSelectedText(): string | null { const activeEditor = this.editorService.getActiveEditor(); - const editorControl = activeEditor.getControl() as IEditor; + + if (!activeEditor) { + return null; + } + + const editorControl = activeEditor.getControl() as IEditor | null; + + if (!editorControl) { + return null; + } + const selection = editorControl.getSelection(); - let isSelection = selection ? (selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn) : false; + if (!selection) { + return null; + } + + const startPosition = selection.getStartPosition(); + const endPosition = selection.getEndPosition(); + + let isSelection = startPosition.column !== endPosition.column; + let isMultiline = startPosition.lineNumber !== endPosition.lineNumber; - if (!isSelection) { - return ''; + if (!isSelection || isMultiline) { + return null; } const model = editorControl.getModel(); if (!('getValueInRange' in model)) { // not interested in any other type of model, but TextModel - return ''; + return null; } let selectedText = (model as ITextModel).getValueInRange(selection); diff --git a/src/vs/workbench/services/editor/common/editorService.ts b/src/vs/workbench/services/editor/common/editorService.ts index 215b03c98adeb..076ea7939693e 100644 --- a/src/vs/workbench/services/editor/common/editorService.ts +++ b/src/vs/workbench/services/editor/common/editorService.ts @@ -39,7 +39,7 @@ export interface IWorkbenchEditorService extends IEditorService { /** * Returns the currently active editor or null if none. */ - getActiveEditor(): IEditor; + getActiveEditor(): IEditor | null; /** * Returns the currently active editor input or null if none. From 7997d3ab6c4d933797b4734b9bff1810cf6bc0d6 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sun, 14 Jan 2018 13:32:14 +0300 Subject: [PATCH 04/15] Add config entries for prefill, control which prefixes to prefill --- .../parts/quickopen/quickOpenController.ts | 17 +++++++++++++++-- .../electron-browser/main.contribution.ts | 17 +++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index 0a88d507a33dd..bab9d7488dc5e 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -582,6 +582,19 @@ export class QuickOpenController extends Component implements IQuickOpenService return selectedText; } + private shouldPrefill(prefix?: string): boolean { + const isTurnedOn = this.configurationService.getValue('workbench.quickOpen.prefillFromSelection') as string; + const prefixes = this.configurationService.getValue('workbench.quickOpen.prefillPrefixes') as string[]; + + if (!isTurnedOn) { + return false; + } + + const prefillsPrefix = prefixes.indexOf(prefix) !== -1; + + return prefillsPrefix; + } + public show(prefix?: string, options?: IShowOptions): TPromise { let quickNavigateConfiguration = options ? options.quickNavigateConfiguration : void 0; let inputSelection = options ? options.inputSelection : void 0; @@ -629,8 +642,8 @@ export class QuickOpenController extends Component implements IQuickOpenService const selectedText = this.getSelectedText(); - if (!prefix && selectedText) { - prefix = selectedText; + if (selectedText && this.shouldPrefill(prefix)) { + prefix = (prefix || '') + selectedText; } // Show quick open with prefix or editor history diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index c4c442816424d..c6bf2e145eb8c 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -226,6 +226,23 @@ configurationRegistry.registerConfiguration({ 'description': nls.localize('closeOnFocusLost', "Controls if Quick Open should close automatically once it loses focus."), 'default': true }, + 'workbench.quickOpen.prefillFromSelection': { + 'type': 'boolean', + 'default': true, + 'description': nls.localize('quickopen.prefillFromSelection', "Controls if selected text should prefill quickopen query"), + }, + 'workbench.quickOpen.prefillPrefixes': { + 'type': 'array', + 'items': { + 'type': ['string', 'null'] + }, + 'default': [ + null, + '', + '@' + ], + 'description': nls.localize('quickopen.prefillPrefixes', "Controls which prefixes should be prefilled on quickopen if prefill feature turned on"), + }, 'workbench.settings.openDefaultSettings': { 'type': 'boolean', 'description': nls.localize('openDefaultSettings', "Controls if opening settings also opens an editor showing all default settings."), From dff8968a5b4e6240fb89fb60d101d77187eb7e63 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sun, 14 Jan 2018 13:33:54 +0300 Subject: [PATCH 05/15] correct type --- src/vs/workbench/browser/parts/quickopen/quickOpenController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index bab9d7488dc5e..2e46f356ff8c7 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -584,7 +584,7 @@ export class QuickOpenController extends Component implements IQuickOpenService private shouldPrefill(prefix?: string): boolean { const isTurnedOn = this.configurationService.getValue('workbench.quickOpen.prefillFromSelection') as string; - const prefixes = this.configurationService.getValue('workbench.quickOpen.prefillPrefixes') as string[]; + const prefixes = this.configurationService.getValue('workbench.quickOpen.prefillPrefixes') as Array; if (!isTurnedOn) { return false; From 50856eacba640bdf606327fd4dd89be9ba127396 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sun, 14 Jan 2018 14:21:00 +0300 Subject: [PATCH 06/15] Add diez prefix --- src/vs/workbench/electron-browser/main.contribution.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index c6bf2e145eb8c..4bd389a05644b 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -239,7 +239,8 @@ configurationRegistry.registerConfiguration({ 'default': [ null, '', - '@' + '@', + '#' ], 'description': nls.localize('quickopen.prefillPrefixes', "Controls which prefixes should be prefilled on quickopen if prefill feature turned on"), }, From 33096ffbb4a0e8c1a27b3934f5ae188640bdcc13 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sun, 14 Jan 2018 15:40:15 +0300 Subject: [PATCH 07/15] fix type --- src/vs/workbench/browser/parts/quickopen/quickOpenController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index 2e46f356ff8c7..5570a071368be 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -583,7 +583,7 @@ export class QuickOpenController extends Component implements IQuickOpenService } private shouldPrefill(prefix?: string): boolean { - const isTurnedOn = this.configurationService.getValue('workbench.quickOpen.prefillFromSelection') as string; + const isTurnedOn = this.configurationService.getValue('workbench.quickOpen.prefillFromSelection') as boolean; const prefixes = this.configurationService.getValue('workbench.quickOpen.prefillPrefixes') as Array; if (!isTurnedOn) { From ec592ab99815d74d0618bcee897ef775c8cf4826 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sun, 14 Jan 2018 15:44:15 +0300 Subject: [PATCH 08/15] inline variable --- .../workbench/browser/parts/quickopen/quickOpenController.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index 5570a071368be..3b75d86f0e82d 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -590,9 +590,7 @@ export class QuickOpenController extends Component implements IQuickOpenService return false; } - const prefillsPrefix = prefixes.indexOf(prefix) !== -1; - - return prefillsPrefix; + return prefixes.indexOf(prefix) !== -1; } public show(prefix?: string, options?: IShowOptions): TPromise { From 700ea9a3012ba6ceb51c1772a96937ff9e9e822e Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sun, 14 Jan 2018 16:14:40 +0300 Subject: [PATCH 09/15] remove empty string --- src/vs/workbench/electron-browser/main.contribution.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index 4bd389a05644b..f06adac1f4c34 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -238,7 +238,6 @@ configurationRegistry.registerConfiguration({ }, 'default': [ null, - '', '@', '#' ], From af8cced75acd7f38e71bd1f8dcb4d7cf02f67eef Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sat, 20 Jan 2018 16:41:55 +0300 Subject: [PATCH 10/15] Use getSelectionSearchString --- .../parts/quickopen/quickOpenController.ts | 34 +++---------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index 3b75d86f0e82d..e70a6d5f38896 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -55,8 +55,9 @@ import { FileKind, IFileService } from 'vs/platform/files/common/files'; import { scoreItem, ScorerCache, compareItemsByScore, prepareQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer'; import { getBaseLabel } from 'vs/base/common/labels'; import { WorkbenchTree, IListService } from 'vs/platform/list/browser/listService'; -import { ITextModel } from 'vs/editor/common/model'; -import { IEditor } from 'vs/editor/common/editorCommon'; +import { getSelectionSearchString } from 'vs/editor/contrib/find/findController'; +import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; + const HELP_PREFIX = '?'; @@ -548,38 +549,13 @@ export class QuickOpenController extends Component implements IQuickOpenService return null; } - const editorControl = activeEditor.getControl() as IEditor | null; + const editorControl = activeEditor.getControl() as ICodeEditor | null; if (!editorControl) { return null; } - const selection = editorControl.getSelection(); - - if (!selection) { - return null; - } - - const startPosition = selection.getStartPosition(); - const endPosition = selection.getEndPosition(); - - let isSelection = startPosition.column !== endPosition.column; - let isMultiline = startPosition.lineNumber !== endPosition.lineNumber; - - if (!isSelection || isMultiline) { - return null; - } - - const model = editorControl.getModel(); - - if (!('getValueInRange' in model)) { - // not interested in any other type of model, but TextModel - return null; - } - - let selectedText = (model as ITextModel).getValueInRange(selection); - - return selectedText; + return getSelectionSearchString(editorControl); } private shouldPrefill(prefix?: string): boolean { From dbc2972fe4b0abde0a9e9d514c9424f83ecade72 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sat, 20 Jan 2018 16:42:26 +0300 Subject: [PATCH 11/15] Select prefilled text --- .../workbench/browser/parts/quickopen/quickOpenController.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index e70a6d5f38896..a68427788c0dc 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -617,6 +617,10 @@ export class QuickOpenController extends Component implements IQuickOpenService const selectedText = this.getSelectedText(); if (selectedText && this.shouldPrefill(prefix)) { + inputSelection = { + start: prefix ? prefix.length : 0, + end: selectedText.length + 1 + }; prefix = (prefix || '') + selectedText; } From 358bbc48fb46ffb3df9f4f34e66fd3334cb37586 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sat, 20 Jan 2018 16:43:29 +0300 Subject: [PATCH 12/15] Remove prefill from ShowAllSymbolsAction --- .../search/electron-browser/search.contribution.ts | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts index c6cf0de7e596d..500d8f6dbb870 100644 --- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts @@ -261,18 +261,7 @@ class ShowAllSymbolsAction extends Action { } public run(context?: any): TPromise { - - let prefix = ShowAllSymbolsAction.ALL_SYMBOLS_PREFIX; - let inputSelection: { start: number; end: number; } = void 0; - let editor = this.editorService.getFocusedCodeEditor(); - const word = editor && getSelectionSearchString(editor); - if (word) { - prefix = prefix + word; - inputSelection = { start: 1, end: word.length + 1 }; - } - - this.quickOpenService.show(prefix, { inputSelection }); - + this.quickOpenService.show(ShowAllSymbolsAction.ALL_SYMBOLS_PREFIX); return TPromise.as(null); } } From 94f27f6717c4dad679ba5e5ef4265f33b601b071 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sat, 20 Jan 2018 16:47:43 +0300 Subject: [PATCH 13/15] Remove use of quickOpenService --- .../parts/search/electron-browser/search.contribution.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts index 500d8f6dbb870..41362d707e9f8 100644 --- a/src/vs/workbench/parts/search/electron-browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/electron-browser/search.contribution.ts @@ -21,8 +21,6 @@ import { QuickOpenHandlerDescriptor, IQuickOpenRegistry, Extensions as QuickOpen import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen'; -import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; -import { getSelectionSearchString } from 'vs/editor/contrib/find/findController'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import { ITree } from 'vs/base/parts/tree/browser/tree'; @@ -254,8 +252,7 @@ class ShowAllSymbolsAction extends Action { constructor( actionId: string, actionLabel: string, - @IQuickOpenService private quickOpenService: IQuickOpenService, - @ICodeEditorService private editorService: ICodeEditorService) { + @IQuickOpenService private quickOpenService: IQuickOpenService) { super(actionId, actionLabel); this.enabled = !!this.quickOpenService; } From 0071d8ba52260884fd0d3e9741be9196b87bec9d Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sat, 20 Jan 2018 16:50:37 +0300 Subject: [PATCH 14/15] Cast empty prefix to empty string --- .../workbench/browser/parts/quickopen/quickOpenController.ts | 2 +- src/vs/workbench/electron-browser/main.contribution.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts index a68427788c0dc..188305fe0593d 100644 --- a/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts +++ b/src/vs/workbench/browser/parts/quickopen/quickOpenController.ts @@ -566,7 +566,7 @@ export class QuickOpenController extends Component implements IQuickOpenService return false; } - return prefixes.indexOf(prefix) !== -1; + return prefixes.indexOf(prefix || '') !== -1; } public show(prefix?: string, options?: IShowOptions): TPromise { diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index f06adac1f4c34..7c8e0c47976f1 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -234,10 +234,10 @@ configurationRegistry.registerConfiguration({ 'workbench.quickOpen.prefillPrefixes': { 'type': 'array', 'items': { - 'type': ['string', 'null'] + 'type': 'string' }, 'default': [ - null, + '', '@', '#' ], From 929c98affb3cb8e4f338005cc3531c311409c4b1 Mon Sep 17 00:00:00 2001 From: Max Sysoev Date: Sat, 20 Jan 2018 16:56:28 +0300 Subject: [PATCH 15/15] Restrict prefill to only "all symbols search" --- src/vs/workbench/electron-browser/main.contribution.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index 7c8e0c47976f1..f15e07e0ec796 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -237,8 +237,6 @@ configurationRegistry.registerConfiguration({ 'type': 'string' }, 'default': [ - '', - '@', '#' ], 'description': nls.localize('quickopen.prefillPrefixes', "Controls which prefixes should be prefilled on quickopen if prefill feature turned on"),