提交 fc07b2f1 编写于 作者: M meganrogge

add comments to clarify code

上级 83f000df
...@@ -72,26 +72,26 @@ function getHeadersForPosition(toc: TocEntry[], position: vscode.Position): { he ...@@ -72,26 +72,26 @@ function getHeadersForPosition(toc: TocEntry[], position: vscode.Position): { he
}; };
} }
function createHeaderRange(header: TocEntry, isClosestHeaderToPosition: boolean, onHeaderLine: boolean, parent?: vscode.SelectionRange, childStart?: vscode.Position): vscode.SelectionRange | undefined { function createHeaderRange(header: TocEntry, isClosestHeaderToPosition: boolean, onHeaderLine: boolean, parent?: vscode.SelectionRange, startOfChildRange?: vscode.Position): vscode.SelectionRange | undefined {
const contentRange = new vscode.Range(header.location.range.start.translate(1), header.location.range.end); const range = header.location.range;
const headerPlusContentRange = header.location.range; const contentRange = new vscode.Range(range.start.translate(1), range.end);
const partialContentRange = childStart && isClosestHeaderToPosition ? contentRange.with(undefined, childStart) : undefined; if (onHeaderLine && isClosestHeaderToPosition && startOfChildRange) {
if (onHeaderLine && isClosestHeaderToPosition && childStart) { // selection was made on this header line, so select header and its content until the start of its first child
return new vscode.SelectionRange(header.location.range.with(undefined, childStart), new vscode.SelectionRange(header.location.range, parent)); // then all of its content
return new vscode.SelectionRange(range.with(undefined, startOfChildRange), new vscode.SelectionRange(range, parent));
} else if (onHeaderLine && isClosestHeaderToPosition) { } else if (onHeaderLine && isClosestHeaderToPosition) {
return new vscode.SelectionRange(header.location.range, parent); // selection was made on this header line and no children so expand to all of its content
} else if (parent && parent.range.contains(headerPlusContentRange)) { return new vscode.SelectionRange(range, parent);
if (partialContentRange) { } else if (isClosestHeaderToPosition && startOfChildRange) {
return new vscode.SelectionRange(partialContentRange, new vscode.SelectionRange(contentRange, (new vscode.SelectionRange(headerPlusContentRange, parent)))); // selection was made within content and has child so select content
} else { // of this header then all content then header
return new vscode.SelectionRange(contentRange, new vscode.SelectionRange(headerPlusContentRange, parent)); return new vscode.SelectionRange(contentRange.with(undefined, startOfChildRange), new vscode.SelectionRange(contentRange, (new vscode.SelectionRange(range, parent))));
}
} else if (partialContentRange) {
return new vscode.SelectionRange(partialContentRange, new vscode.SelectionRange(contentRange, (new vscode.SelectionRange(headerPlusContentRange))));
} else { } else {
return new vscode.SelectionRange(contentRange, new vscode.SelectionRange(headerPlusContentRange)); // no children and not on this header line so select content then header
return new vscode.SelectionRange(contentRange, new vscode.SelectionRange(range, parent));
} }
} }
function getTokensForPosition(tokens: Token[], position: vscode.Position): Token[] { function getTokensForPosition(tokens: Token[], position: vscode.Position): Token[] {
const enclosingTokens = tokens.filter(token => token.map && (token.map[0] <= position.line && token.map[1] > position.line) && isBlockElement(token)); const enclosingTokens = tokens.filter(token => token.map && (token.map[0] <= position.line && token.map[1] > position.line) && isBlockElement(token));
if (enclosingTokens.length === 0) { if (enclosingTokens.length === 0) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册