提交 6e2aa0bf 编写于 作者: M meganrogge

clean up code and remove unused methods

上级 ce7e6d99
......@@ -112,34 +112,11 @@ function createBlockRange(block: Token, document: vscode.TextDocument, cursorLin
} else if (isList(block) && document.lineAt(endLine).isEmptyOrWhitespace) {
endLine = endLine - 1;
}
const startPos = new vscode.Position(startLine, 0);
const endPos = new vscode.Position(endLine, document.lineAt(endLine).text?.length ?? 0);
const range = new vscode.Range(startPos, endPos);
if (parent && parent.range.contains(range) && !parent.range.isEqual(range)) {
const range = new vscode.Range(startLine, 0, endLine, document.lineAt(endLine).text?.length ?? 0);
if (parent?.range.contains(range) && !parent.range.isEqual(range)) {
return new vscode.SelectionRange(range, parent);
} else if (parent?.range.isEqual(range)) {
return parent;
} else if (parent) {
// parent doesn't contain range
if (rangeLinesEqual(range, parent.range)) {
return range.end.character > parent.range.end.character ? new vscode.SelectionRange(range) : parent;
} else if (parent.range.end.line + 1 === range.end.line) {
const adjustedRange = new vscode.Range(range.start, range.end.translate(-1, parent.range.end.character));
if (adjustedRange.isEqual(parent.range)) {
return parent;
} else {
return new vscode.SelectionRange(adjustedRange, parent);
}
} else if (parent.range.end.line === range.end.line) {
const adjustedRange = new vscode.Range(parent.range.start, range.end.translate(undefined, range.end.character));
if (adjustedRange.isEqual(parent.range)) {
return parent;
} else {
return new vscode.SelectionRange(adjustedRange, parent.parent);
}
} else {
return parent;
}
} else {
return new vscode.SelectionRange(range);
}
......@@ -150,36 +127,17 @@ function createFencedRange(token: Token, cursorLine: number, document: vscode.Te
const startLine = token.map[0];
const endLine = token.map[1] - 1;
const onFenceLine = cursorLine === startLine || cursorLine === endLine;
const fenceRange = new vscode.Range(new vscode.Position(startLine, 0), new vscode.Position(endLine, document.lineAt(endLine).text.length));
const contentRange = endLine - startLine > 2 && !onFenceLine ? new vscode.Range(new vscode.Position(startLine + 1, 0), new vscode.Position(endLine - 1, document.lineAt(endLine - 1).text.length)) : undefined;
if (parent && contentRange) {
if (parent.range.contains(fenceRange) && !parent.range.isEqual(fenceRange)) {
return new vscode.SelectionRange(contentRange, new vscode.SelectionRange(fenceRange, parent));
} else if (parent.range.isEqual(fenceRange)) {
return new vscode.SelectionRange(contentRange, parent);
} else if (rangeLinesEqual(fenceRange, parent.range)) {
const revisedRange = fenceRange.end.character > parent.range.end.character ? fenceRange : parent.range;
return new vscode.SelectionRange(contentRange, new vscode.SelectionRange(revisedRange, getRealParent(parent, revisedRange)));
} else if (parent.range.end.line === fenceRange.end.line) {
parent.range.end.translate(undefined, fenceRange.end.character);
return new vscode.SelectionRange(contentRange, new vscode.SelectionRange(fenceRange, parent));
}
} else if (contentRange) {
return new vscode.SelectionRange(contentRange, new vscode.SelectionRange(fenceRange));
} else if (parent) {
if (parent.range.contains(fenceRange) && !parent.range.isEqual(fenceRange)) {
return new vscode.SelectionRange(fenceRange, parent);
} else if (parent.range.isEqual(fenceRange)) {
const fenceRange = new vscode.Range(startLine, 0, endLine, document.lineAt(endLine).text.length);
const contentRange = endLine - startLine > 2 && !onFenceLine ? new vscode.Range(startLine + 1, 0, endLine - 1, document.lineAt(endLine - 1).text.length) : undefined;
if (contentRange) {
return new vscode.SelectionRange(contentRange, new vscode.SelectionRange(fenceRange, parent));
} else {
if (parent?.range.isEqual(fenceRange)) {
return parent;
} else if (rangeLinesEqual(fenceRange, parent.range)) {
const revisedRange = fenceRange.end.character > parent.range.end.character ? fenceRange : parent.range;
return new vscode.SelectionRange(revisedRange, parent.parent);
} else if (parent.range.end.line === fenceRange.end.line) {
parent.range.end.translate(undefined, fenceRange.end.character);
} else {
return new vscode.SelectionRange(fenceRange, parent);
}
}
return new vscode.SelectionRange(fenceRange, parent);
}
function isList(token: Token): boolean {
......@@ -190,14 +148,6 @@ function isBlockElement(token: Token): boolean {
return !['list_item_close', 'paragraph_close', 'bullet_list_close', 'inline', 'heading_close', 'heading_open'].includes(token.type);
}
function getRealParent(parent: vscode.SelectionRange, range: vscode.Range) {
let currentParent: vscode.SelectionRange | undefined = parent;
while (currentParent && !currentParent.range.contains(range)) {
currentParent = currentParent.parent;
}
return currentParent;
}
function getFirstChildHeader(document: vscode.TextDocument, header?: TocEntry, toc?: TocEntry[]): vscode.Position | undefined {
let childRange: vscode.Position | undefined;
if (header && toc) {
......@@ -210,7 +160,3 @@ function getFirstChildHeader(document: vscode.TextDocument, header?: TocEntry, t
}
return undefined;
}
function rangeLinesEqual(range: vscode.Range, parent: vscode.Range) {
return range.start.line === parent.start.line && range.end.line === parent.end.line;
}
......@@ -335,7 +335,7 @@ suite('markdown.SmartSelect', () => {
`- content 2`,
`- content 2`));
assertNestedLineNumbersEqual(ranges![0], [9, 11], [8, 12], [7, 17], [1, 17], [0, 17]);
assertNestedLineNumbersEqual(ranges![0], [9, 11], [8, 12], [8, 12], [7, 17], [1, 17], [0, 17]);
});
test('Smart select fenced code block then list then rest of content on fenced line', async () => {
const ranges = await getSelectionRangesForDocument(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册