提交 ebec7141 编写于 作者: J Jackson Kearl

Adopt registerAction2 in search editor land.

Ref #96672.
上级 86cb707a
...@@ -10,7 +10,7 @@ import { URI } from 'vs/base/common/uri'; ...@@ -10,7 +10,7 @@ import { URI } from 'vs/base/common/uri';
import { ServicesAccessor } from 'vs/editor/browser/editorExtensions'; import { ServicesAccessor } from 'vs/editor/browser/editorExtensions';
import { ToggleCaseSensitiveKeybinding, ToggleRegexKeybinding, ToggleWholeWordKeybinding } from 'vs/editor/contrib/find/findModel'; import { ToggleCaseSensitiveKeybinding, ToggleRegexKeybinding, ToggleWholeWordKeybinding } from 'vs/editor/contrib/find/findModel';
import { localize } from 'vs/nls'; import { localize } from 'vs/nls';
import { MenuId, MenuRegistry, SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { MenuId, SyncActionDescriptor, registerAction2, Action2 } from 'vs/platform/actions/common/actions';
import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { CommandsRegistry } from 'vs/platform/commands/common/commands';
import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
...@@ -26,12 +26,14 @@ import { Extensions as EditorInputExtensions, IEditorInputFactory, IEditorInputF ...@@ -26,12 +26,14 @@ import { Extensions as EditorInputExtensions, IEditorInputFactory, IEditorInputF
import * as SearchConstants from 'vs/workbench/contrib/search/common/constants'; import * as SearchConstants from 'vs/workbench/contrib/search/common/constants';
import * as SearchEditorConstants from 'vs/workbench/contrib/searchEditor/browser/constants'; import * as SearchEditorConstants from 'vs/workbench/contrib/searchEditor/browser/constants';
import { SearchEditor } from 'vs/workbench/contrib/searchEditor/browser/searchEditor'; import { SearchEditor } from 'vs/workbench/contrib/searchEditor/browser/searchEditor';
import { modifySearchEditorContextLinesCommand, OpenResultsInEditorAction, OpenSearchEditorAction, OpenSearchEditorToSideAction, RerunSearchEditorSearchAction, selectAllSearchEditorMatchesCommand, toggleSearchEditorCaseSensitiveCommand, toggleSearchEditorContextLinesCommand, toggleSearchEditorRegexCommand, toggleSearchEditorWholeWordCommand, FocusQueryEditorWidgetAction } from 'vs/workbench/contrib/searchEditor/browser/searchEditorActions'; import { modifySearchEditorContextLinesCommand, OpenSearchEditorAction, selectAllSearchEditorMatchesCommand, toggleSearchEditorCaseSensitiveCommand, toggleSearchEditorContextLinesCommand, toggleSearchEditorRegexCommand, toggleSearchEditorWholeWordCommand, createEditorFromSearchResult, openNewSearchEditor } from 'vs/workbench/contrib/searchEditor/browser/searchEditorActions';
import { getOrMakeSearchEditorInput, SearchEditorInput, SearchConfiguration } from 'vs/workbench/contrib/searchEditor/browser/searchEditorInput'; import { getOrMakeSearchEditorInput, SearchEditorInput, SearchConfiguration } from 'vs/workbench/contrib/searchEditor/browser/searchEditorInput';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { parseSavedSearchEditor } from 'vs/workbench/contrib/searchEditor/browser/searchEditorSerialization'; import { parseSavedSearchEditor } from 'vs/workbench/contrib/searchEditor/browser/searchEditorSerialization';
import { Range } from 'vs/editor/common/core/range'; import { Range } from 'vs/editor/common/core/range';
import { searchRefreshIcon } from 'vs/workbench/contrib/search/browser/searchIcons'; import { searchRefreshIcon } from 'vs/workbench/contrib/search/browser/searchIcons';
import { IViewsService } from 'vs/workbench/common/views';
import { getSearchView } from 'vs/workbench/contrib/search/browser/searchActions';
//#region Editor Descriptior //#region Editor Descriptior
Registry.as<IEditorRegistry>(EditorExtensions.Editors).registerEditor( Registry.as<IEditorRegistry>(EditorExtensions.Editors).registerEditor(
...@@ -193,36 +195,105 @@ CommandsRegistry.registerCommand( ...@@ -193,36 +195,105 @@ CommandsRegistry.registerCommand(
const registry = Registry.as<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions); const registry = Registry.as<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions);
const category = localize('search', "Search Editor"); const category = localize('search', "Search Editor");
registry.registerWorkbenchAction( // TODO: Not an action2 becuase used in view pane container action bar, which uses actions
SyncActionDescriptor.from(OpenResultsInEditorAction,
{ mac: { primary: KeyMod.CtrlCmd | KeyCode.Enter } },
ContextKeyExpr.and(SearchConstants.HasSearchResults, SearchConstants.SearchViewFocusedKey)),
'Search Editor: Open Results in Editor', category);
registry.registerWorkbenchAction( registry.registerWorkbenchAction(
SyncActionDescriptor.from(OpenSearchEditorAction), SyncActionDescriptor.from(OpenSearchEditorAction),
'Search Editor: Open New Search Editor', category); 'Search Editor: Open New Search Editor', category);
registry.registerWorkbenchAction( registerAction2(class extends Action2 {
SyncActionDescriptor.from(OpenSearchEditorToSideAction), constructor() {
'Search Editor: Open New Search Editor to Side', category); super({
id: SearchEditorConstants.OpenInEditorCommandId,
registry.registerWorkbenchAction(SyncActionDescriptor.from(RerunSearchEditorSearchAction, title: localize('search.openResultsInEditor', "Open Results in Editor"),
{ mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_R } }), category,
'Search Editor: Search Again', category, SearchEditorConstants.InSearchEditor); f1: true,
keybinding: {
registry.registerWorkbenchAction(SyncActionDescriptor.from(FocusQueryEditorWidgetAction, primary: KeyMod.CtrlCmd | KeyCode.Enter,
{ primary: KeyCode.Escape }), when: ContextKeyExpr.and(SearchConstants.HasSearchResults, SearchConstants.SearchViewFocusedKey),
'Search Editor: Focus Query Editor Widget', category, SearchEditorConstants.InSearchEditor); weight: KeybindingWeight.WorkbenchContrib
//#endregion },
});
}
async run(accessor: ServicesAccessor) {
const viewsService = accessor.get(IViewsService);
const instantiationService = accessor.get(IInstantiationService);
const searchView = getSearchView(viewsService);
if (searchView) {
await instantiationService.invokeFunction(createEditorFromSearchResult, searchView.searchResult, searchView.searchIncludePattern.getValue(), searchView.searchExcludePattern.getValue());
}
}
});
registerAction2(class extends Action2 {
constructor() {
super({
id: SearchEditorConstants.OpenNewEditorToSideCommandId,
title: localize('search.openNewEditorToSide', "Open New Search Editor to Side"),
category,
f1: true,
});
}
async run(accessor: ServicesAccessor) {
const instantiationService = accessor.get(IInstantiationService);
await instantiationService.invokeFunction(openNewSearchEditor, true);
}
});
MenuRegistry.appendMenuItem(MenuId.EditorTitle, { registerAction2(class extends Action2 {
command: { constructor() {
id: RerunSearchEditorSearchAction.ID, super({
title: RerunSearchEditorSearchAction.LABEL, id: SearchEditorConstants.RerunSearchEditorSearchCommandId,
icon: searchRefreshIcon, title: localize('search.rerunSearchInEditor', "Search Again"),
category,
keybinding: {
primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_R,
when: SearchEditorConstants.InSearchEditor,
weight: KeybindingWeight.EditorContrib
}, },
icon: searchRefreshIcon,
menu: [{
id: MenuId.EditorTitle,
group: 'navigation', group: 'navigation',
when: ContextKeyExpr.and(ActiveEditorContext.isEqualTo(SearchEditorConstants.SearchEditorID)) when: ActiveEditorContext.isEqualTo(SearchEditorConstants.SearchEditorID)
},
{
id: MenuId.CommandPalette,
when: ActiveEditorContext.isEqualTo(SearchEditorConstants.SearchEditorID)
}]
});
}
async run(accessor: ServicesAccessor) {
const editorService = accessor.get(IEditorService);
const input = editorService.activeEditor;
if (input instanceof SearchEditorInput) {
(editorService.activeEditorPane as SearchEditor).triggerSearch({ resetCursor: false });
}
}
});
registerAction2(class extends Action2 {
constructor() {
super({
id: SearchEditorConstants.FocusQueryEditorWidgetCommandId,
title: localize('search.action.focusQueryEditorWidget', "Focus Search Editor Input"),
category,
menu: {
id: MenuId.CommandPalette,
when: ActiveEditorContext.isEqualTo(SearchEditorConstants.SearchEditorID)
},
keybinding: {
primary: KeyCode.Escape,
when: SearchEditorConstants.InSearchEditor,
weight: KeybindingWeight.EditorContrib
}
});
}
async run(accessor: ServicesAccessor) {
const editorService = accessor.get(IEditorService);
const input = editorService.activeEditor;
if (input instanceof SearchEditorInput) {
(editorService.activeEditorPane as SearchEditor).focusSearchInput();
}
}
}); });
//#endregion
...@@ -12,8 +12,6 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur ...@@ -12,8 +12,6 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { ILabelService } from 'vs/platform/label/common/label'; import { ILabelService } from 'vs/platform/label/common/label';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IViewsService } from 'vs/workbench/common/views';
import { getSearchView } from 'vs/workbench/contrib/search/browser/searchActions';
import { SearchResult } from 'vs/workbench/contrib/search/common/searchModel'; import { SearchResult } from 'vs/workbench/contrib/search/common/searchModel';
import * as Constants from 'vs/workbench/contrib/searchEditor/browser/constants'; import * as Constants from 'vs/workbench/contrib/searchEditor/browser/constants';
import { SearchEditor } from 'vs/workbench/contrib/searchEditor/browser/searchEditor'; import { SearchEditor } from 'vs/workbench/contrib/searchEditor/browser/searchEditor';
...@@ -21,7 +19,7 @@ import { getOrMakeSearchEditorInput, SearchEditorInput } from 'vs/workbench/cont ...@@ -21,7 +19,7 @@ import { getOrMakeSearchEditorInput, SearchEditorInput } from 'vs/workbench/cont
import { serializeSearchResultForEditor } from 'vs/workbench/contrib/searchEditor/browser/searchEditorSerialization'; import { serializeSearchResultForEditor } from 'vs/workbench/contrib/searchEditor/browser/searchEditorSerialization';
import { IEditorService, SIDE_GROUP, ACTIVE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { IEditorService, SIDE_GROUP, ACTIVE_GROUP } from 'vs/workbench/services/editor/common/editorService';
import { ISearchConfigurationProperties } from 'vs/workbench/services/search/common/search'; import { ISearchConfigurationProperties } from 'vs/workbench/services/search/common/search';
import { searchRefreshIcon, searchNewEditorIcon, searchGotoFileIcon } from 'vs/workbench/contrib/search/browser/searchIcons'; import { searchNewEditorIcon } from 'vs/workbench/contrib/search/browser/searchIcons';
export const toggleSearchEditorCaseSensitiveCommand = (accessor: ServicesAccessor) => { export const toggleSearchEditorCaseSensitiveCommand = (accessor: ServicesAccessor) => {
const editorService = accessor.get(IEditorService); const editorService = accessor.get(IEditorService);
...@@ -71,7 +69,6 @@ export const selectAllSearchEditorMatchesCommand = (accessor: ServicesAccessor) ...@@ -71,7 +69,6 @@ export const selectAllSearchEditorMatchesCommand = (accessor: ServicesAccessor)
} }
}; };
export class OpenSearchEditorAction extends Action { export class OpenSearchEditorAction extends Action {
static readonly ID: string = Constants.OpenNewEditorCommandId; static readonly ID: string = Constants.OpenNewEditorCommandId;
...@@ -96,88 +93,7 @@ export class OpenSearchEditorAction extends Action { ...@@ -96,88 +93,7 @@ export class OpenSearchEditorAction extends Action {
} }
} }
export class OpenSearchEditorToSideAction extends Action { export const openNewSearchEditor =
static readonly ID: string = Constants.OpenNewEditorToSideCommandId;
static readonly LABEL = localize('search.openNewEditorToSide', "Open New Search Editor to Side");
constructor(id: string, label: string,
@IInstantiationService private readonly instantiationService: IInstantiationService,
) {
super(id, label, searchNewEditorIcon.classNames);
}
async run() {
await this.instantiationService.invokeFunction(openNewSearchEditor, true);
}
}
export class OpenResultsInEditorAction extends Action {
static readonly ID: string = Constants.OpenInEditorCommandId;
static readonly LABEL = localize('search.openResultsInEditor', "Open Results in Editor");
constructor(id: string, label: string,
@IViewsService private viewsService: IViewsService,
@IInstantiationService private readonly instantiationService: IInstantiationService,
) {
super(id, label, searchGotoFileIcon.classNames);
}
get enabled(): boolean {
const searchView = getSearchView(this.viewsService);
return !!searchView && searchView.hasSearchResults();
}
update() {
this._setEnabled(this.enabled);
}
async run() {
const searchView = getSearchView(this.viewsService);
if (searchView) {
await this.instantiationService.invokeFunction(createEditorFromSearchResult, searchView.searchResult, searchView.searchIncludePattern.getValue(), searchView.searchExcludePattern.getValue());
}
}
}
export class RerunSearchEditorSearchAction extends Action {
static readonly ID: string = Constants.RerunSearchEditorSearchCommandId;
static readonly LABEL = localize('search.rerunSearchInEditor', "Search Again");
constructor(id: string, label: string,
@IEditorService private readonly editorService: IEditorService,
) {
super(id, label, searchRefreshIcon.classNames);
}
async run() {
const input = this.editorService.activeEditor;
if (input instanceof SearchEditorInput) {
(this.editorService.activeEditorPane as SearchEditor).triggerSearch({ resetCursor: false });
}
}
}
export class FocusQueryEditorWidgetAction extends Action {
static readonly ID: string = Constants.FocusQueryEditorWidgetCommandId;
static readonly LABEL = localize('search.action.focusQueryEditorWidget', "Focus Search Editor Input");
constructor(id: string, label: string,
@IEditorService private readonly editorService: IEditorService,
) {
super(id, label);
}
async run() {
const input = this.editorService.activeEditor;
if (input instanceof SearchEditorInput) {
(this.editorService.activeEditorPane as SearchEditor).focusSearchInput();
}
}
}
const openNewSearchEditor =
async (accessor: ServicesAccessor, toSide = false) => { async (accessor: ServicesAccessor, toSide = false) => {
const editorService = accessor.get(IEditorService); const editorService = accessor.get(IEditorService);
const telemetryService = accessor.get(ITelemetryService); const telemetryService = accessor.get(ITelemetryService);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册