#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
, то это не срабатывает. В этом суть моего вопроса: как узнать правильное положение, не дожидаясь?