Курсор клавиатуры находится в некотором документе (окне, не знаю, как оно точно называется).
Нужно считать текущую строку, затем предыдущую строку, затем строку перед предыдущей и т.п.
Ищем среди них строку, которая имеет вид MODULE<эн пробелов>Идентификатор<что угодно>.
От этой строки запускаем парсер модуля, строим AST (заимствуем функционал из компилятора). Если нам удалось построить AST, то находим в нём место, в котором стоит курсор и возвращаем стек вложенных узлов AST. Если не удалось, то извлекаем слово под курсором (по правилам формирования идентификатора, с учётом возможности появления в нём кириллицы) и возвращаем что-нибудь по смыслу равное "слово такое-то в модуле таком-то" .
Постановка задачи кривая, поскольку на самом деле для этой задачи нужен парсер, способный построить AST для некорректного текста. Решение этой задачи в принципе существует, но это сложно. Поэтому пока будем так. Видимо, в ББ есть какое-то восстановление после ошибок.
Применить это можно будет для:
- точного перехода к определению (функция из другого модуля с учётом переименования при импорте, переменная в этом модуле и т.п.)
- показать документацию к идентификатору в виде hint-а или чего-то подобного.
- показать документацию или интерфейс текущего модуля за одно нажатие
- показать, в какой функции мы находимся
Ваши ставки.