diff --git a/src/vs/workbench/contrib/search/browser/search.contribution.ts b/src/vs/workbench/contrib/search/browser/search.contribution.ts index f5606437005cc5715e374a27691fff6de581d477..933a9af7c49eb289c5b41786139c99dd8cbd5eba 100644 --- a/src/vs/workbench/contrib/search/browser/search.contribution.ts +++ b/src/vs/workbench/contrib/search/browser/search.contribution.ts @@ -854,8 +854,8 @@ configurationRegistry.registerConfiguration({ }, 'search.searchEditor.defaultNumberOfContextLines': { type: ['number', 'null'], - default: null, - markdownDescription: nls.localize('search.searchEditor.defaultNumberOfContextLines', "The default number of surrounding context lines to use when creating new Search Editors with `Search Editor: Open new Search Editor` and `Search Editor: Open new Search Editor to the Side`. If defined, this overrides `#search.searchEditor.reusePriorSearchConfiguration#`.") + default: 1, + markdownDescription: nls.localize('search.searchEditor.defaultNumberOfContextLines', "The default number of surrounding context lines to use when creating new Search Editors. If using `#search.searchEditor.reusePriorSearchConfiguration#`, this can be set to `null` (empty) to use the prior Search Editor's configuration.") }, 'search.sortOrder': { 'type': 'string', diff --git a/src/vs/workbench/contrib/search/browser/searchWidget.ts b/src/vs/workbench/contrib/search/browser/searchWidget.ts index 65eaa29d0857df63e10d9e4449c456fe7b6a2923..61b1666716c550ba6a180b8b73049bfa6483df0f 100644 --- a/src/vs/workbench/contrib/search/browser/searchWidget.ts +++ b/src/vs/workbench/contrib/search/browser/searchWidget.ts @@ -355,7 +355,7 @@ export class SearchWidget extends Widget { if (options.showContextToggle) { this.contextLinesInput = new InputBox(searchInputContainer, this.contextViewService, { type: 'number' }); dom.addClass(this.contextLinesInput.element, 'context-lines-input'); - this.contextLinesInput.value = '2'; + this.contextLinesInput.value = '' + (this.configurationService.getValue('search').searchEditor.defaultNumberOfContextLines ?? 1); this._register(this.contextLinesInput.onDidChange(() => this.onContextLinesChanged())); this._register(attachInputBoxStyler(this.contextLinesInput, this.themeService)); dom.append(searchInputContainer, this.showContextCheckbox.domNode); diff --git a/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts b/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts index 9eb6ccf25e81ec4b94999ce009d164cd1e7ec38e..0b202a5b0622c525797be668c424046019bb5cb7 100644 --- a/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts +++ b/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts @@ -164,6 +164,7 @@ export const createEditorFromSearchResult = const telemetryService = accessor.get(ITelemetryService); const instantiationService = accessor.get(IInstantiationService); const labelService = accessor.get(ILabelService); + const configurationService = accessor.get(IConfigurationService); telemetryService.publicLog2('searchEditor/createEditorFromSearchResult'); @@ -171,8 +172,15 @@ export const createEditorFromSearchResult = const labelFormatter = (uri: URI): string => labelService.getUriLabel(uri, { relative: true }); const { text, matchRanges, config } = serializeSearchResultForEditor(searchResult, rawIncludePattern, rawExcludePattern, 0, labelFormatter); + const contextLines = configurationService.getValue('search').searchEditor.defaultNumberOfContextLines; - const input = instantiationService.invokeFunction(getOrMakeSearchEditorInput, { text, config }); - await editorService.openEditor(input, { pinned: true }); - input.setMatchRanges(matchRanges); + if (searchResult.isDirty || contextLines === 0 || contextLines === null) { + const input = instantiationService.invokeFunction(getOrMakeSearchEditorInput, { text, config }); + await editorService.openEditor(input, { pinned: true }); + input.setMatchRanges(matchRanges); + } else { + const input = instantiationService.invokeFunction(getOrMakeSearchEditorInput, { text: '', config: { ...config, contextLines } }); + const editor = await editorService.openEditor(input, { pinned: true }) as SearchEditor; + editor.triggerSearch({ focusResults: true }); + } };