Class ReferenceIndexFiller
Обрабатывает события изменения контекста документов и обновляет индекс ссылок на символы.
-
Constructor Summary
ConstructorsConstructorDescriptionReferenceIndexFiller(ReferenceIndex index, LanguageServerConfiguration configuration, OScriptLibraryIndex oScriptLibraryIndex, GlobalScopeProvider globalScopeProvider, SelfMemberResolver selfMemberResolver) -
Method Summary
Modifier and TypeMethodDescriptionvoidfill(DocumentContext documentContext) Переиндексировать обращения к символам, расположенные в документе.voidПереиндексирует self-члены документов после (пере)регистрации конфигурационных типов.voidvoidОбрабатывает событие удаления документа из контекста сервера.
-
Constructor Details
-
ReferenceIndexFiller
@ConstructorProperties({"index","configuration","oScriptLibraryIndex","globalScopeProvider","selfMemberResolver"}) public ReferenceIndexFiller(ReferenceIndex index, LanguageServerConfiguration configuration, OScriptLibraryIndex oScriptLibraryIndex, GlobalScopeProvider globalScopeProvider, SelfMemberResolver selfMemberResolver)
-
-
Method Details
-
handleEvent
-
handleEvent
Обрабатывает событие удаления документа из контекста сервера.При удалении документа очищает все зарегистрированные в индексе ссылки, исходящие из этого документа (вызовы методов, использование переменных и т.д.).
- Parameters:
event- событие удаления документа
-
handleEvent
Переиндексирует self-члены документов после (пере)регистрации конфигурационных типов.Проход self-членов в
fill(DocumentContext)резолвит их черезTypeRegistry: документ, наполненный ДО регистрации типов (либо до их перерегистрации при будущем reload конфигурации), самих self-членов ещё не проиндексировал — здесь их подхватываем, чем и обеспечивается обещанноеSelfMemberResolverImpl/ReferenceIndexвосстановление подсветки/резолва. Перебираем только уже наполненные документы с self-типом; при обычном порядке (типы регистрируются раньшеdidOpen) наполненных документов на этот момент ещё нет — обработчик вхолостую.- Parameters:
event- событие успешной регистрации конфигурационных типов.
-
fill
Переиндексировать обращения к символам, расположенные в документе.Новый набор вхождений собирается в буфер и применяется атомарной заменой (
ReferenceIndex.replaceReferences(URI, Iterable)): конкурентные читатели ни в какой момент не видят «пустой» индекс документа. Если обход AST завершился исключением, прежнее содержимое индекса остаётся нетронутым.
-