Это сложно.Я сам делаю то же самое.
Один из подходов:
Вам понадобится парсер, который выдаст вам массив возможных AST для текста вплоть до токенадо текущей позиции курсора.
Оттуда вы можете видеть, что следующий токен может быть нескольких типов (обычно только один) и выполнять завершение, основываясь на неполном тексте.парсер работает, я пришлю ссылку.
Удачи, и дайте мне знать, если вы найдете пакет, который делает это.