提交 5c58b8cb 编写于 作者: R rebornix

Fix #30358. Run block comment when there are mulitple block comments inline.

上级 0137b24a
......@@ -54,19 +54,25 @@ export class BlockCommentCommand implements editorCommon.ICommand {
var ops: editorCommon.IIdentifiedSingleEditOperation[];
if (startTokenIndex !== -1 && endTokenIndex !== -1) {
// We have to adjust to possible inner white space
// For Space after startToken, add Space to startToken - range math will work out
if (model.getLineContent(startLineNumber).charCodeAt(startTokenIndex + startToken.length) === CharCode.Space) {
startToken += ' ';
var endTokenBeforeCursorIndex = model.getLineContent(startLineNumber).lastIndexOf(endToken, startColumn - 1 + endToken.length);
if (endTokenBeforeCursorIndex > startTokenIndex + startToken.length - 1) {
ops = BlockCommentCommand._createAddBlockCommentOperations(selection, startToken, endToken);
this._usedEndToken = ops.length === 1 ? endToken : null;
} else {
// We have to adjust to possible inner white space
// For Space after startToken, add Space to startToken - range math will work out
if (model.getLineContent(startLineNumber).charCodeAt(startTokenIndex + startToken.length) === CharCode.Space) {
startToken += ' ';
}
// For Space before endToken, add Space before endToken and shift index one left
if (model.getLineContent(endLineNumber).charCodeAt(endTokenIndex - 1) === CharCode.Space) {
endToken = ' ' + endToken;
endTokenIndex -= 1;
}
ops = BlockCommentCommand._createRemoveBlockCommentOperations(
new Range(startLineNumber, startTokenIndex + 1 + startToken.length, endLineNumber, endTokenIndex + 1), startToken, endToken
);
}
// For Space before endToken, add Space before endToken and shift index one left
if (model.getLineContent(endLineNumber).charCodeAt(endTokenIndex - 1) === CharCode.Space) {
endToken = ' ' + endToken;
endTokenIndex -= 1;
}
ops = BlockCommentCommand._createRemoveBlockCommentOperations(
new Range(startLineNumber, startTokenIndex + 1 + startToken.length, endLineNumber, endTokenIndex + 1), startToken, endToken
);
} else {
ops = BlockCommentCommand._createAddBlockCommentOperations(selection, startToken, endToken);
this._usedEndToken = ops.length === 1 ? endToken : null;
......
......@@ -433,4 +433,28 @@ suite('Editor Contrib - Block Comment Command', () => {
new Selection(1, 5, 2, 4)
);
});
test('bug #30358', function () {
testBlockCommentCommand(
[
'<0 start 0> middle end',
],
new Selection(1, 20, 1, 23),
[
'<0 start 0> middle <0 end 0>'
],
new Selection(1, 23, 1, 26)
);
testBlockCommentCommand(
[
'<0 start 0> middle <0 end 0>'
],
new Selection(1, 13, 1, 19),
[
'<0 start 0> <0 middle 0> <0 end 0>'
],
new Selection(1, 16, 1, 22)
);
});
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册