提交 330d9a77 编写于 作者: J Jackson Kearl

WIP to show ts assertion failure

上级 ead3e237
......@@ -87,16 +87,48 @@ export class SearchEditor extends BaseEditor {
createEditor(parent: HTMLElement) {
DOM.addClass(parent, 'search-editor');
// Query
this.queryEditorContainer = DOM.append(parent, DOM.$('.query-container'));
this.createQueryEditor(parent);
// Editor
const searchResultContainer = DOM.append(parent, DOM.$('.search-results'));
const configuration: IEditorOptions = this.configurationService.getValue('editor', { overrideIdentifier: 'search-result' });
const options: ICodeEditorWidgetOptions = {};
this.searchResultEditor = this._register(this.instantiationService.createInstance(CodeEditorWidget, searchResultContainer, configuration, options));
this.searchResultEditor.onMouseUp(e => {
if (e.event.detail === 2) {
const behaviour = this.configurationService.getValue<ISearchConfigurationProperties>('search').searchEditorPreview.doubleClickBehaviour;
const position = e.target.position;
if (position && behaviour !== 'selectWord') {
const line = this.searchResultEditor.getModel()?.getLineContent(position.lineNumber) ?? '';
if (line.match(RESULT_LINE_REGEX)) {
this.searchResultEditor.setSelection(Range.fromPositions(position));
this.commandService.executeCommand(behaviour === 'goToLocation' ? 'editor.action.goToDeclaration' : 'editor.action.openDeclarationToTheSide');
}
}
}
});
this._register(this.searchResultEditor.onKeyDown(e => e.keyCode === KeyCode.Escape && this.queryEditorWidget.searchInput.focus()));
this._register(this.searchResultEditor.onDidChangeModel(() => this.hideHeader()));
this._register(this.searchResultEditor.onDidChangeModelContent(() => (this._input as SearchEditorInput)?.setDirty(true)));
[this.queryEditorWidget.searchInputFocusTracker, this.queryEditorWidget.replaceInputFocusTracker, this.inputPatternExcludes.inputFocusTracker, this.inputPatternIncludes.inputFocusTracker]
.map(tracker => {
this._register(tracker.onDidFocus(() => setTimeout(() => this.inputFocusContextKey.set(true), 0)));
this._register(tracker.onDidBlur(() => this.inputFocusContextKey.set(false)));
});
}
private createQueryEditor(parent: HTMLElement) {
this.queryEditorContainer = DOM.append(parent, DOM.$('.query-container'));
this.queryEditorWidget = this._register(this.instantiationService.createInstance(SearchWidget, this.queryEditorContainer, { _hideReplaceToggle: true, showContextToggle: true }));
this._register(this.queryEditorWidget.onReplaceToggled(() => this.reLayout()));
this._register(this.queryEditorWidget.onDidHeightChange(() => this.reLayout()));
this.queryEditorWidget.onSearchSubmit(() => this.runSearch(true)); // onSearchSubmit has an internal delayer, so skip over ours.
this.queryEditorWidget.searchInput.onDidOptionChange(() => this.runSearch());
this.queryEditorWidget.onDidToggleContext(() => this.runSearch());
// Includes/Excludes Dropdown
this.includesExcludesContainer = DOM.append(this.queryEditorContainer, DOM.$('.includes-excludes'));
// // Toggle query details button
......@@ -107,7 +139,6 @@ export class SearchEditor extends BaseEditor {
}));
this._register(DOM.addDisposableListener(this.toggleQueryDetailsButton, DOM.EventType.KEY_UP, (e: KeyboardEvent) => {
const event = new StandardKeyboardEvent(e);
if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) {
DOM.EventHelper.stop(e);
this.toggleIncludesExcludes();
......@@ -115,70 +146,33 @@ export class SearchEditor extends BaseEditor {
}));
this._register(DOM.addDisposableListener(this.toggleQueryDetailsButton, DOM.EventType.KEY_DOWN, (e: KeyboardEvent) => {
const event = new StandardKeyboardEvent(e);
if (event.equals(KeyMod.Shift | KeyCode.Tab)) {
if (this.queryEditorWidget.isReplaceActive()) {
this.queryEditorWidget.focusReplaceAllAction();
} else {
}
else {
this.queryEditorWidget.isReplaceShown() ? this.queryEditorWidget.replaceInput.focusOnPreserve() : this.queryEditorWidget.focusRegexAction();
}
DOM.EventHelper.stop(e);
}
}));
// // Includes
const folderIncludesList = DOM.append(this.includesExcludesContainer, DOM.$('.file-types.includes'));
const filesToIncludeTitle = localize('searchScope.includes', "files to include");
DOM.append(folderIncludesList, DOM.$('h4', undefined, filesToIncludeTitle));
this.inputPatternIncludes = this._register(this.instantiationService.createInstance(PatternInputWidget, folderIncludesList, this.contextViewService, {
ariaLabel: localize('label.includes', 'Search Include Patterns'),
}));
this.inputPatternIncludes.onSubmit(_triggeredOnType => this.runSearch());
// // Excludes
const excludesList = DOM.append(this.includesExcludesContainer, DOM.$('.file-types.excludes'));
const excludesTitle = localize('searchScope.excludes', "files to exclude");
DOM.append(excludesList, DOM.$('h4', undefined, excludesTitle));
this.inputPatternExcludes = this._register(this.instantiationService.createInstance(ExcludePatternInputWidget, excludesList, this.contextViewService, {
ariaLabel: localize('label.excludes', 'Search Exclude Patterns'),
}));
this.inputPatternExcludes.onSubmit(_triggeredOnType => this.runSearch());
this.inputPatternExcludes.onChangeIgnoreBox(() => this.runSearch());
// Editor
const searchResultContainer = DOM.append(parent, DOM.$('.search-results'));
const configuration: IEditorOptions = this.configurationService.getValue('editor', { overrideIdentifier: 'search-result' });
const options: ICodeEditorWidgetOptions = {};
this.searchResultEditor = this._register(this.instantiationService.createInstance(CodeEditorWidget, searchResultContainer, configuration, options));
this.searchResultEditor.onMouseUp(e => {
if (e.event.detail === 2) {
const behaviour = this.configurationService.getValue<ISearchConfigurationProperties>('search').searchEditorPreview.doubleClickBehaviour;
const position = e.target.position;
if (position && behaviour !== 'selectWord') {
const line = this.searchResultEditor.getModel()?.getLineContent(position.lineNumber) ?? '';
if (line.match(RESULT_LINE_REGEX)) {
this.searchResultEditor.setSelection(Range.fromPositions(position));
this.commandService.executeCommand(behaviour === 'goToLocation' ? 'editor.action.goToDeclaration' : 'editor.action.openDeclarationToTheSide');
}
}
}
});
this._register(this.searchResultEditor.onKeyDown(e => e.keyCode === KeyCode.Escape && this.queryEditorWidget.searchInput.focus()));
this._register(this.searchResultEditor.onDidChangeModel(() => this.hideHeader()));
this._register(this.searchResultEditor.onDidChangeModelContent(() => (this._input as SearchEditorInput)?.setDirty(true)));
[this.queryEditorWidget.searchInputFocusTracker, this.queryEditorWidget.replaceInputFocusTracker, this.inputPatternExcludes.inputFocusTracker, this.inputPatternIncludes.inputFocusTracker]
.map(tracker => {
this._register(tracker.onDidFocus(() => setTimeout(() => this.inputFocusContextKey.set(true), 0)));
this._register(tracker.onDidBlur(() => this.inputFocusContextKey.set(false)));
});
}
focusNextInput() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册