From 915e1eb8cbf53e9340d5c2fde5b1b192abe59ea6 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Mon, 26 Jun 2017 14:18:15 -0700 Subject: [PATCH] Return if there was parsing error --- extensions/emmet/src/balance.ts | 3 +++ extensions/emmet/src/matchTag.ts | 6 +++++- extensions/emmet/src/mergeLines.ts | 4 +++- extensions/emmet/src/selectItem.ts | 3 +++ extensions/emmet/src/splitJoinTag.ts | 4 +++- extensions/emmet/src/toggleComment.ts | 4 +++- extensions/emmet/src/updateTag.ts | 3 +++ 7 files changed, 23 insertions(+), 4 deletions(-) diff --git a/extensions/emmet/src/balance.ts b/extensions/emmet/src/balance.ts index 6ee9a16295b..8158be1b43b 100644 --- a/extensions/emmet/src/balance.ts +++ b/extensions/emmet/src/balance.ts @@ -30,6 +30,9 @@ function balance(out: boolean) { let getRangeFunction = out ? getRangeToBalanceOut : getRangeToBalanceIn; let rootNode: HtmlNode = parse(new DocumentStreamReader(editor.document)); + if (!rootNode) { + return; + } let newSelections: vscode.Selection[] = []; editor.selections.forEach(selection => { diff --git a/extensions/emmet/src/matchTag.ts b/extensions/emmet/src/matchTag.ts index ec6c19e78a4..686bded335b 100644 --- a/extensions/emmet/src/matchTag.ts +++ b/extensions/emmet/src/matchTag.ts @@ -17,6 +17,9 @@ export function matchTag() { } let rootNode: HtmlNode = parse(new DocumentStreamReader(editor.document)); + if (!rootNode) { + return; + } let updatedSelections = []; editor.selections.forEach(selection => { let updatedSelection = getUpdatedSelections(editor, selection.start, rootNode); @@ -38,7 +41,8 @@ function getUpdatedSelections(editor: vscode.TextEditor, position: vscode.Positi return; } - let finalPosition = position.isBeforeOrEqual(currentNode.open.end) ? currentNode.close.start : currentNode.open.start; + // Place cursor inside the close tag if cursor is inside the open tag, else place it inside the open tag + let finalPosition = position.isBeforeOrEqual(currentNode.open.end) ? currentNode.close.start.translate(0, 2) : currentNode.open.start.translate(0, 1); return new vscode.Selection(finalPosition, finalPosition); } diff --git a/extensions/emmet/src/mergeLines.ts b/extensions/emmet/src/mergeLines.ts index 8331ae4bbab..cc60826f10d 100644 --- a/extensions/emmet/src/mergeLines.ts +++ b/extensions/emmet/src/mergeLines.ts @@ -21,7 +21,9 @@ export function mergeLines() { } let rootNode: Node = parse(new DocumentStreamReader(editor.document)); - + if (!rootNode) { + return; + } editor.edit(editBuilder => { editor.selections.reverse().forEach(selection => { let [rangeToReplace, textToReplaceWith] = getRangesToReplace(editor.document, selection, rootNode); diff --git a/extensions/emmet/src/selectItem.ts b/extensions/emmet/src/selectItem.ts index 483ff104861..df63432a108 100644 --- a/extensions/emmet/src/selectItem.ts +++ b/extensions/emmet/src/selectItem.ts @@ -35,6 +35,9 @@ export function fetchSelectItem(direction: string): void { } let rootNode: Node = parseContent(new DocumentStreamReader(editor.document)); + if (!rootNode) { + return; + } let newSelections: vscode.Selection[] = []; editor.selections.forEach(selection => { const selectionStart = selection.isReversed ? selection.active : selection.anchor; diff --git a/extensions/emmet/src/splitJoinTag.ts b/extensions/emmet/src/splitJoinTag.ts index 49c1b676f0b..9fdb892a752 100644 --- a/extensions/emmet/src/splitJoinTag.ts +++ b/extensions/emmet/src/splitJoinTag.ts @@ -21,7 +21,9 @@ export function splitJoinTag() { } let rootNode: Node = parse(new DocumentStreamReader(editor.document)); - + if (!rootNode) { + return; + } editor.edit(editBuilder => { editor.selections.reverse().forEach(selection => { let [rangeToReplace, textToReplaceWith] = getRangesToReplace(editor.document, selection, rootNode); diff --git a/extensions/emmet/src/toggleComment.ts b/extensions/emmet/src/toggleComment.ts index d796e75cf51..e4287a7337f 100644 --- a/extensions/emmet/src/toggleComment.ts +++ b/extensions/emmet/src/toggleComment.ts @@ -41,7 +41,9 @@ export function toggleComment() { } let rootNode = parseContent(new DocumentStreamReader(editor.document)); - + if (!rootNode) { + return; + } editor.edit(editBuilder => { editor.selections.reverse().forEach(selection => { let [rangesToUnComment, rangeToComment] = toggleCommentInternal(editor.document, selection, rootNode); diff --git a/extensions/emmet/src/updateTag.ts b/extensions/emmet/src/updateTag.ts index 48c177840f7..9b0d55043b4 100644 --- a/extensions/emmet/src/updateTag.ts +++ b/extensions/emmet/src/updateTag.ts @@ -17,6 +17,9 @@ export function updateTag(tagName: string) { } let rootNode: HtmlNode = parse(new DocumentStreamReader(editor.document)); + if (!rootNode) { + return; + } let rangesToUpdate = []; editor.selections.reverse().forEach(selection => { rangesToUpdate = rangesToUpdate.concat(getRangesToUpdate(editor, selection, rootNode));