Я могу придумать два варианта:
Изменить лексер CDT для поддержки ключевых слов, содержащих пробелы. Я не думаю, что это то, что вы можете сделать с помощью общедоступного API, вам придется изменить основные классы CDT, например org.eclipse.cdt.internal.core.parser.scanner.Lexer
. (В качестве альтернативы вы можете рассмотреть возможность добавления патча для добавления такой поддержки в лексер.)
Используйте семантическое выделение , чтобы выделить ключевые слова, содержащие пробелы. Существует точка расширения org.eclipse.cdt.ui.semanticHighlighting
, позволяющая плагинам обеспечивать пользовательскую семантическую подсветку.
Разница в восприятии пользователя будет заключаться в том, что лексическое выделение применяется сразу после каждого нажатия клавиши, а семантическое выделение применяется после небольшой задержки после остановки ввода (поскольку вычисление обходится дороже). Этот эффект можно увидеть, если сравнить, как ключевые слова override
и final
в настоящее время подсвечиваются в C ++, по сравнению с другими ключевыми словами: override
и final
используют семантическое выделение, поскольку они являются контекстно-зависимыми ключевыми словами.
Я должен также упомянуть, что работает ли второй подход, зависит от того, как ваши новые ключевые слова вписываются в грамматику. Их необходимо проанализировать как IASTName
, чтобы применить к ним семантическое выделение.