Refactoring toggleComment

This commit is contained in:
Ramya Achutha Rao 2017-06-07 10:03:05 -07:00
parent dd9ebe1d6e
commit c47b702fa5

View file

@ -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];
}