Refactoring toggleComment
This commit is contained in:
parent
dd9ebe1d6e
commit
c47b702fa5
|
@ -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];
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue