我想开发一个Visual Code扩展,它在编辑器中匹配某个Regex。我想用window.showInputBox
显示每个匹配项,以便用户可以选择一个,我想导航到编辑器中的相应行。
如何获取匹配的行号?有什么想法吗?
谢谢!
答案 0 :(得分:0)
我这样解决了:
function getTests(document: TextDocument): Promise<Test[]> {
// Return a promise, since this might take a while for large documents
return new Promise<Test[]>((resolve, reject) => {
let testsToReturn = new Array<Test>();
let lineCount = document.lineCount;
for (let lineNumber = 0; lineNumber < lineCount; lineNumber++) {
let lineText = document.lineAt(lineNumber);
let tests = lineText.text.match(/(it\(|describe\()/g);
if (tests) {
for (let i = 0; i < tests.length; i++) {
testsToReturn.push({ lineText: lineText });
}
}
}
if (testsToReturn.length > 0) {
resolve(testsToReturn);
} else {
reject('Found no tests');
}
}).catch();
}
然后通过
在返回的Test
对象中提供行号
test.lineText.lineNumber
有关更多详细信息,请参见full source code。