Вам нужно проанализировать хотя бы некоторые части кода, чтобы узнать, что отображать.
Вам либо нужен синтаксический анализатор, который позволяет выполнять синтаксический анализ до тех пор, пока он не обнаружит ошибку и не продолжит оттуда позже (или даже просто проигнорирует ее и попытается исправить сам, чтобы иметь возможность продолжить анализ - но здесь это становится очень трудным, поэтому вы можете получите доступ к последнему узлу и используйте свою грамматику и существующее синтаксическое дерево для его автозаполнения, или вы кэшируете последнее синтаксическое дерево и используете что-то вроде регулярного выражения, чтобы узнать, когда выполнять автозаполнение, и используйте кеш, чтобы увидеть, что нужно автозаполнить.
Последнее предложение может быть более простым, но имеет тот недостаток, что кэш может быть устаревшим в тот момент, когда вам нужно завершить работу (т. Е. Вы можете создать новый класс в файле, все дополнения на его основе). класс не будет доступен, пока в файле нет ошибок).
Sidenode: видя, что вы выполняете синтаксический анализ, вас могут заинтересовать грамматики синтаксического анализа выражений , однако, они не совсем помогают вам в решении этой проблемы.