Если у вас достаточно функциональный контурный вид, то есть тот, в котором символы расположены иерархически, предоставляя объекты диапазона для всего объема каждого символа, а не только для позиции, тогда вы можете переключить элемент «Хлебные крошки»в меню просмотра, чтобы иметь постоянное представление о том, где вы находитесь в иерархии структуры.Это именно то, к чему я стремился.
Чтобы помочь с этим, у меня были некоторые данные, хранящиеся в переменной с именем currentBlock
, включая symbolInformation
, которая была создана, когда я встретил первую строку, например,метод (взятый из объекта сопоставления, возвращенного из регулярного выражения):
currentBlock.symbolInformation = new vscode.SymbolInformation(
match[1],
vscode.SymbolKind.Method,
className,
new vscode.Location(document.uri,
new vscode.Position(lineNum, line.firstNonWhitespaceCharacterIndex)));
Затем, когда я доберусь до конца блока, я оберну оставшуюся часть информации, включающей данные, сохраненные ранее, инажмите на результат SymbolInformation[]
.
private popBlock(document: vscode.TextDocument, lineNum: number, currentBlock: IndentInfo): vscode.SymbolInformation | undefined {
if (currentBlock.symbolInformation !== undefined) {
currentBlock.symbolInformation = new vscode.SymbolInformation(
currentBlock.symbolInformation.name,
currentBlock.symbolInformation.kind,
currentBlock.symbolInformation.containerName,
new vscode.Location(
currentBlock.symbolInformation.location.uri,
new vscode.Range(
currentBlock.symbolInformation.location.range.start,
new vscode.Position(lineNum-1, document.lineAt(lineNum-1).text.length)
)
)
);
return currentBlock.symbolInformation;
}
}
Здесь вы можете увидеть хлебные крошки, сообщающие полный контекст текущего местоположения над панелью редактора.Он основан на той же информации, которая используется для построения контура.
![enter image description here](https://i.stack.imgur.com/Tu9xP.png)