VS代码扩展:如何在编辑器中获取正则表达式的行号?

时间:2018-05-06 09:30:07

标签: visual-studio-code

我想开发一个Visual Code扩展,它在编辑器中匹配某个Regex。我想用window.showInputBox显示每个匹配项,以便用户可以选择一个,我想导航到编辑器中的相应行。

如何获取匹配的行号?有什么想法吗?

谢谢!

1 个答案:

答案 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