Class KeywordReferenceFinder
- All Implemented Interfaces:
ReferenceFinder
Если, Истина, Цикл…).
Keyword'ы не являются source-defined-символами и не попадают в общий
symbol-tree модуля, поэтому для их hover-обработки строится синтетический
KeywordSymbol на лету — по позиции курсора находится keyword-токен,
по его тексту и AST-контексту использования (Функция/Процедура/Перем для
body-keyword'ов вида Знач/Возврат/Экспорт) выбирается
описание из GlobalScopeProvider.findKeywordDescription(String, Language, String, FileType). Полученный
KeywordSymbol проходит дальше через обычный
HoverProvider-flow
и попадает в KeywordSymbolMarkupContentBuilder.
Аналогично паттерну AnnotationReferenceFinder: оба создают
synthetic-символы on-the-fly без регистрации в symbol-tree.
-
Constructor Summary
ConstructorsConstructorDescriptionKeywordReferenceFinder(ServerContextProvider serverContextProvider, GlobalScopeProvider globalScopeProvider, LanguageServerConfiguration configuration) -
Method Summary
Modifier and TypeMethodDescriptionfindReference(URI uri, TerminalNode terminal) Поиск символа по уже известному терминалу-идентификатору — без спуска по AST от корня к позиции.findReference(URI uri, Position position) Поиск символа по позиции курсора.
-
Constructor Details
-
KeywordReferenceFinder
@ConstructorProperties({"serverContextProvider","globalScopeProvider","configuration"}) public KeywordReferenceFinder(ServerContextProvider serverContextProvider, GlobalScopeProvider globalScopeProvider, LanguageServerConfiguration configuration)
-
-
Method Details
-
findReference
Description copied from interface:ReferenceFinderПоиск символа по позиции курсора.- Specified by:
findReferencein interfaceReferenceFinder- Parameters:
uri- URI документа, в котором необходимо осуществить поиск.position- позиция курсора.- Returns:
- данные ссылки.
-
findReference
Поиск символа по уже известному терминалу-идентификатору — без спуска по AST от корня к позиции. Реализация по умолчанию делегирует вReferenceFinder.findReference(URI, Position)по стартовой позиции терминала (полное поведенческое соответствие позиционному варианту). Finder'ы, чья стоимость — именно этот спуск (findTerminalNodeContainsPositionи аналоги), переопределяют метод на подъём вверх отterminal.Терминал уже под рукой — спуск по AST к позиции не нужен, keyword-символ строится прямо от
terminal.- Specified by:
findReferencein interfaceReferenceFinder- Parameters:
uri- URI документа, в котором необходимо осуществить поиск.terminal- терминал-идентификатор под курсором.- Returns:
- данные ссылки.
-