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));