提交 5a2363c2 编写于 作者: M Matt Bierner

Fix some simple strict null errors in snippet

上级 4e45bc2e
......@@ -34,10 +34,10 @@ export class SnippetController2 implements IEditorContribution {
private readonly _hasNextTabstop: IContextKey<boolean>;
private readonly _hasPrevTabstop: IContextKey<boolean>;
private _session: SnippetSession;
private _session?: SnippetSession;
private _snippetListener: IDisposable[] = [];
private _modelVersionId: number;
private _currentChoice: Choice;
private _currentChoice?: Choice;
constructor(
private readonly _editor: ICodeEditor,
......@@ -87,6 +87,9 @@ export class SnippetController2 implements IEditorContribution {
undoStopBefore: boolean = true, undoStopAfter: boolean = true,
adjustWhitespace: boolean = true,
): void {
if (!this._editor.hasModel()) {
return;
}
// don't listen while inserting the snippet
// as that is the inflight state causing cancelation
......@@ -118,7 +121,7 @@ export class SnippetController2 implements IEditorContribution {
}
private _updateState(): void {
if (!this._session) {
if (!this._session || !this._editor.hasModel()) {
// canceled in the meanwhile
return;
}
......@@ -147,6 +150,11 @@ export class SnippetController2 implements IEditorContribution {
}
private _handleChoice(): void {
if (!this._session) {
this._currentChoice = undefined;
return;
}
const { choice } = this._session;
if (!choice) {
this._currentChoice = undefined;
......@@ -196,12 +204,16 @@ export class SnippetController2 implements IEditorContribution {
}
prev(): void {
this._session.prev();
if (this._session) {
this._session.prev();
}
this._updateState();
}
next(): void {
this._session.next();
if (this._session) {
this._session.next();
}
this._updateState();
}
......@@ -209,7 +221,7 @@ export class SnippetController2 implements IEditorContribution {
return this._inSnippet.get();
}
getSessionEnclosingRange(): Range {
getSessionEnclosingRange(): Range | undefined {
if (this._session) {
return this._session.getEnclosingRange();
}
......
......@@ -95,6 +95,9 @@ export class OneSnippet {
}
move(fwd: boolean | undefined): Selection[] {
if (!this._editor.hasModel()) {
return [];
}
this._initDecorations();
......@@ -190,7 +193,7 @@ export class OneSnippet {
computePossibleSelections() {
const result = new Map<number, Range[]>();
for (const placeholdersWithEqualIndex of this._placeholderGroups) {
let ranges: Range[];
let ranges: Range[] | undefined;
for (const placeholder of placeholdersWithEqualIndex) {
if (placeholder.isFinalTabstop) {
......@@ -278,7 +281,7 @@ export class OneSnippet {
}
public getEnclosingRange(): Range {
let result: Range;
let result: Range | undefined;
const model = this._editor.getModel();
this._placeholderDecorations.forEach((decorationId) => {
const placeholderRange = model.getDecorationRange(decorationId);
......@@ -341,11 +344,14 @@ export class SnippetSession {
}
static createEditsAndSnippets(editor: ICodeEditor, template: string, overwriteBefore: number, overwriteAfter: number, enforceFinalTabstop: boolean, adjustWhitespace: boolean): { edits: IIdentifiedSingleEditOperation[], snippets: OneSnippet[] } {
const model = editor.getModel();
const edits: IIdentifiedSingleEditOperation[] = [];
const snippets: OneSnippet[] = [];
if (!editor.hasModel()) {
return { edits, snippets };
}
const model = editor.getModel();
const modelBasedVariableResolver = new ModelBasedVariableResolver(model);
const clipboardService = editor.invokeWithinContext(accessor => accessor.get(IClipboardService, optional));
......@@ -444,6 +450,9 @@ export class SnippetSession {
}
insert(): void {
if (!this._editor.hasModel()) {
return;
}
const model = this._editor.getModel();
......@@ -463,6 +472,9 @@ export class SnippetSession {
}
merge(template: string, overwriteBefore: number = 0, overwriteAfter: number = 0, adjustWhitespace: boolean = true): void {
if (!this._editor.hasModel()) {
return;
}
this._templateMerges.push([this._snippets[0]._nestingLevel, this._snippets[0]._placeholderGroupsIdx, template]);
const { edits, snippets } = SnippetSession.createEditsAndSnippets(this._editor, template, overwriteBefore, overwriteAfter, true, adjustWhitespace);
......@@ -596,7 +608,7 @@ export class SnippetSession {
}
public getEnclosingRange(): Range {
let result: Range;
let result: Range | undefined;
for (const snippet of this._snippets) {
const snippetRange = snippet.getEnclosingRange();
if (!result) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册