Раскраска для Си мне помогает отличить ключевые слова от идентификаторов. Также легче разобраться в многострочных строках и однострочных комментариях и макросах (звучит как нелепость, но факт), да и просто в строках с ошибочно экранированными кавычками, что у меня случается.
В Обероне предопределенные имена и ключевые слова как кирпичи - ни с чем не спутаешь. Строки - действительно строки, экранированных символов нет, тип не спутаешь с именем переменной. В последнем случае лексерная раскраска конечно не поможет.
Более того, тип ты не сможешь и от функции :-)
V(a);
Тут V может быть как типом, и тогда это объявление переменной, так и функцией, тогда это вызов оной функции :-) И лексерная раскраска тут ну никак не поможет, скорее запутает.
Также в плюсах нет какогого смысла в выделении как-то предопределенных типов, вроде int, char и так далее, просто потому, что типы рукотворные ничем не хуже и могут иметь в точности ту же семантику.
Ключевые слова от идентификаторов в языке, где есть шаблоны и макросы смысла не имеет отделять, просто потому, что "идентификатор" может выполнять те же функции что и ключевое слово языка. Кстати, то же творится и в Haskell'e - ключевые слова выделять не нужно. Да их там почти и нет :-)
Меня периодически достает любая раскраска синтаксиса, и я её вырубаю полностью. И вроде ничего, плюсы программируются на ура :-)
Впрочем, о вкусах не спорят. Если привычно видеть именно ключевые слова выделенными как-либо (капсом, цветом, начертанием, или там подчеркиванием (что, кстати, можно сделать)), то конечно лучше их выделять везде, коль так работается продуктивней.