Наоборот. Где описывается синтаксис - там же удобно описать логику автокомплита, специфичных рефакторингов, чего угодно. Всё равно она будет не внутри процесса IDE, а где-нибудь в language server.
Это все понятно. Но представьте, что должна делать среда для переименования метода. Нужно сначала развернуть все макросы, чтобы найти его настоящие упоминания, а потом прокрутить все назад, чтобы определить что именно в исходном коде менять. А там еще может быть произвольная логика...