From c47b702fa5b4f667cc63e5be9e519d3c9e89b0cb Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Wed, 7 Jun 2017 10:03:05 -0700 Subject: [PATCH] Refactoring toggleComment --- extensions/emmet/src/toggleComment.ts | 41 ++++++++++++--------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/extensions/emmet/src/toggleComment.ts b/extensions/emmet/src/toggleComment.ts index 75c0791342d..1849535420c 100644 --- a/extensions/emmet/src/toggleComment.ts +++ b/extensions/emmet/src/toggleComment.ts @@ -43,21 +43,21 @@ export function toggleComment() { editor.edit(editBuilder => { editor.selections.reverse().forEach(selection => { - let [rangesToUnComment, positionForCommentStart, positionForCommentEnd] = toggleCommentInternal(editor.document, selection, rootNode); - rangesToUnComment.forEach(rangeToDelete => { - editBuilder.delete(rangeToDelete); + let [rangesToUnComment, rangeToComment] = toggleCommentInternal(editor.document, selection, rootNode); + rangesToUnComment.forEach((rangeToUnComment: vscode.Range) => { + editBuilder.delete(new vscode.Range(rangeToUnComment.start, rangeToUnComment.start.translate(0, startComment.length))); + editBuilder.delete(new vscode.Range(rangeToUnComment.end.translate(0, -endComment.length), rangeToUnComment.end)); }); - if (positionForCommentStart) { - editBuilder.insert(positionForCommentStart, startComment); - } - if (positionForCommentEnd) { - editBuilder.insert(positionForCommentEnd, endComment); + if (rangeToComment) { + editBuilder.insert(rangeToComment.start, startComment); + editBuilder.insert(rangeToComment.end, endComment); } + }); }); } -function toggleCommentHTML(document: vscode.TextDocument, selection: vscode.Selection, rootNode: Node): [vscode.Range[], vscode.Position, vscode.Position] { +function toggleCommentHTML(document: vscode.TextDocument, selection: vscode.Selection, rootNode: Node): [vscode.Range[], vscode.Range] { const selectionStart = document.offsetAt(selection.isReversed ? selection.active : selection.anchor); const selectionEnd = document.offsetAt(selection.isReversed ? selection.anchor : selection.active); @@ -65,7 +65,7 @@ function toggleCommentHTML(document: vscode.TextDocument, selection: vscode.Sele let endNode = getNode(rootNode, selectionEnd, true); if (!startNode || !endNode) { - return [[], null, null]; + return [[], null]; } let allNodes: Node[] = getNodesInBetween(startNode, endNode); @@ -76,12 +76,11 @@ function toggleCommentHTML(document: vscode.TextDocument, selection: vscode.Sele }); if (startNode.type === 'comment') { - return [rangesToUnComment, null, null]; + return [rangesToUnComment, null]; } - let positionForCommentStart = document.positionAt(allNodes[0].start); - let positionForCommentEnd = document.positionAt(allNodes[allNodes.length - 1].end); - return [rangesToUnComment, positionForCommentStart, positionForCommentEnd]; + let rangeToComment = new vscode.Range(document.positionAt(allNodes[0].start), document.positionAt(allNodes[allNodes.length - 1].end)); + return [rangesToUnComment, rangeToComment]; } function getRangesToUnCommentHTML(node: Node, document: vscode.TextDocument): vscode.Range[] { @@ -89,8 +88,7 @@ function getRangesToUnCommentHTML(node: Node, document: vscode.TextDocument): vs // If current node is commented, then uncomment and return if (node.type === 'comment') { - rangesToUnComment.push(new vscode.Range(document.positionAt(node.start), document.positionAt(node.start + startCommentHTML.length))); - rangesToUnComment.push(new vscode.Range(document.positionAt(node.end), document.positionAt(node.end - endCommentHTML.length))); + rangesToUnComment.push(new vscode.Range(document.positionAt(node.start), document.positionAt(node.end))); return rangesToUnComment; } @@ -103,7 +101,7 @@ function getRangesToUnCommentHTML(node: Node, document: vscode.TextDocument): vs return rangesToUnComment; } -function toggleCommentStylesheet(document: vscode.TextDocument, selection: vscode.Selection, rootNode: Node): [vscode.Range[], vscode.Position, vscode.Position] { +function toggleCommentStylesheet(document: vscode.TextDocument, selection: vscode.Selection, rootNode: Node): [vscode.Range[], vscode.Range] { const selectionStart = document.offsetAt(selection.isReversed ? selection.active : selection.anchor); const selectionEnd = document.offsetAt(selection.isReversed ? selection.anchor : selection.active); @@ -124,15 +122,12 @@ function toggleCommentStylesheet(document: vscode.TextDocument, selection: vscod } if (selection.contains(commentStart) || selection.contains(commentEnd) || (comment.start <= selectionStart && comment.end >= selectionEnd)) { - rangesToUnComment.push(new vscode.Range(document.positionAt(comment.start), document.positionAt(comment.start + startCommentStylesheet.length))); - rangesToUnComment.push(new vscode.Range(document.positionAt(comment.end), document.positionAt(comment.end - endCommentStylesheet.length))); + rangesToUnComment.push(new vscode.Range(document.positionAt(comment.start), document.positionAt(comment.end))); } }); - let positionForCommentStart = isFirstNodeCommented ? null : document.positionAt(startNode.start); - let positionForCommentEnd = isFirstNodeCommented ? null : document.positionAt(endNode.end); - - return [rangesToUnComment, positionForCommentStart, positionForCommentEnd]; + let rangeToComment = isFirstNodeCommented ? null : new vscode.Range(document.positionAt(startNode.start), document.positionAt(endNode.end)); + return [rangesToUnComment, rangeToComment]; }