Получите правильный выбор с расширением VSCode при переходе пользователя к новому документу

#visual-studio-code #vscode-extensions

Вопрос:

У меня есть добавочный номер, на который подписана window.onDidChangeActiveTextEditor . Если Go to definition используется, TextEditor полученное сообщение onDidChangeActiveTextEditor сообщит selection об 0,0 этом . «Правильный» выбор переносится в отдельное событие ( onDidChangeTextEditorSelection ).

Это onDidChangeActiveTextEditor событие, по-видимому, происходит из textFileEditors.ts :

 textEditor.setModel(textFileModel.textEditorModel);
 

Выбор будет обновлен вскоре после этого:

 // Apply options to editor if any
if (options) {
    applyTextEditorOptions(options, textEditor, ScrollType.Immediate);
}
 

Даже если перевернуть, это не повлияет, потому что новый выбор передается во внутреннем событии, которое не достигнет кода до onDidChangeActiveTextEditor того, как событие будет отправлено на хост расширения.

Есть ли способ для расширения узнать, открыт ли новый редактор в 0,0 или в другой позиции, не дожидаясь, пока выбор будет обновлен вскоре после этого?

Событиями для открытия редактора в (0,0) являются:

  • didOpenTextDocument
  • didChangeActiveTextEditor

Событиями для открытия редактора в любой другой позиции являются:

  • didOpenTextDocument
  • didChangeActiveTextEditor (позиция равна (0,0))
  • onDidChangeTextEditorSelection (позиция-это «правильная» позиция)

Комментарии:

1. если вы зависите от текущего выбора, чем использовать onDidChangeTextEditorSelection и использовать только текущий редактор в этом обработчике событий

2. @rioV8 это работает только в том случае, если пользователь открывает файл в позиции != (0,0). Если пользователь открывает при (0,0) onDidChangeTextEditorSelection , то это не срабатывает. В этом суть моего вопроса: как узнать правильное положение, не дожидаясь?