Расширение кода VS: Как получить номер строки для регулярного выражения в редакторе? - PullRequest
0 голосов
/ 06 мая 2018

Я хочу разработать расширение Visual Code, которое соответствует определенному регулярному выражению в редакторе. Я хочу показать каждое совпадение с помощью window.showInputBox, чтобы пользователь мог выбрать его, и я хочу перейти к соответствующей строке в редакторе.

Как я могу получить номер строки для моих матчей? Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 20 июля 2018

Я решил это так:

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

Подробнее см. полный исходный код .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...