提交 0dcc8e4d 编写于 作者: P Peng Lyu

inPlaceReplace strict null checks.

上级 b4aafa6a
......@@ -329,6 +329,7 @@
"./vs/editor/contrib/hover/hoverOperation.ts",
"./vs/editor/contrib/hover/hoverWidgets.ts",
"./vs/editor/contrib/hover/modesGlyphHover.ts",
"./vs/editor/contrib/inPlaceReplace/inPlaceReplace.ts",
"./vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.ts",
"./vs/editor/contrib/indentation/indentation.ts",
"./vs/editor/contrib/indentation/indentUtils.ts",
......
......@@ -37,7 +37,7 @@ class InPlaceReplaceController implements IEditorContribution {
private readonly editor: ICodeEditor;
private readonly editorWorkerService: IEditorWorkerService;
private decorationIds: string[] = [];
private currentRequest: CancelablePromise<IInplaceReplaceSupportResult>;
private currentRequest: CancelablePromise<IInplaceReplaceSupportResult | null>;
private decorationRemover: CancelablePromise<void>;
constructor(
......@@ -63,21 +63,29 @@ class InPlaceReplaceController implements IEditorContribution {
}
let selection = this.editor.getSelection();
if (selection === null) {
return Promise.resolve(void 0);
}
const model = this.editor.getModel();
if (!model) {
return Promise.resolve(void 0);
}
const modelURI = model.uri;
if (selection.startLineNumber !== selection.endLineNumber) {
// Can't accept multiline selection
return null;
return Promise.resolve(void 0);
}
const state = new EditorState(this.editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position);
if (!this.editorWorkerService.canNavigateValueSet(modelURI)) {
return undefined;
return Promise.resolve(void 0);
}
this.currentRequest = createCancelablePromise(token => this.editorWorkerService.navigateValueSet(modelURI, selection, up));
this.currentRequest = createCancelablePromise(token => this.editorWorkerService.navigateValueSet(modelURI, selection!, up));
return this.currentRequest.then(result => {
......@@ -94,7 +102,7 @@ class InPlaceReplaceController implements IEditorContribution {
// Selection
let editRange = Range.lift(result.range);
let highlightRange = result.range;
let diff = result.value.length - (selection.endColumn - selection.startColumn);
let diff = result.value.length - (selection!.endColumn - selection!.startColumn);
// highlight
highlightRange = {
......@@ -104,11 +112,11 @@ class InPlaceReplaceController implements IEditorContribution {
endColumn: highlightRange.startColumn + result.value.length
};
if (diff > 1) {
selection = new Selection(selection.startLineNumber, selection.startColumn, selection.endLineNumber, selection.endColumn + diff - 1);
selection = new Selection(selection!.startLineNumber, selection!.startColumn, selection!.endLineNumber, selection!.endColumn + diff - 1);
}
// Insert new text
const command = new InPlaceReplaceCommand(editRange, selection, result.value);
const command = new InPlaceReplaceCommand(editRange, selection!, result.value);
this.editor.pushUndoStop();
this.editor.executeCommand(source, command);
......@@ -150,7 +158,7 @@ class InPlaceReplaceUp extends EditorAction {
public run(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {
let controller = InPlaceReplaceController.get(editor);
if (!controller) {
return undefined;
return Promise.resolve(void 0);
}
return controller.run(this.id, true);
}
......@@ -175,7 +183,7 @@ class InPlaceReplaceDown extends EditorAction {
public run(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {
let controller = InPlaceReplaceController.get(editor);
if (!controller) {
return undefined;
return Promise.resolve(void 0);
}
return controller.run(this.id, false);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册