LINUX.ORG.RU

[emacs] Подсветка синтаксиса C++

 


0

2

Есть ли нормальная система подсветки синтаксиса для емакса? Сейчас используется то ли встроенная, то ли из CEDET - пичалька. Иногда возврашаемое значение функции подкрашивается как объявление переменной (пока такое замечал только на шаблонах), типы-параметры шаблонов часто забываются внутри функции, несколько раз наблюдал глюк при объявлении переменной вида type abc123def, подсвечивалось только abc - в этих случаях вроде бы всегда помогает перезагрузка исходника. Для любых невсторенных типов не работает подсветка заголовка функции void foo(owntype const &x), при этом void(const owntype &x) работает правильно, но тут он вообще игнорит проверку типа и просто подсвечивает любое слово после const.

Есть ли для емакса нормально работающая система подсветки с++?

★★★★★

void foo(owntype const &x)

Да в общем type const вообще нигде не работает для пользовательских типов.

staseg ★★★★★
() автор топика

Да, скорее всего там принимает участие цедет. Ну С++ он такой, темболее шаблоны, и всё такое, цедет наверное не распарсивает просто твои мегаконструкции. :-)

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

А вообще пример исходник кинь. Проверю у себя, чтоли... Да и заодно проверим как это лоровский [[code]]подкрашиватель раскрасит.

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

А вообще пример исходник кинь. Проверю у себя, чтоли... Да и заодно проверим как это лоровский [code]подкрашиватель раскрасит.

В том то и дело, что большая часть проявляется эпизодически и при перезагрузке исходника и иногда просто через некоторое время все становится нормально. Ну кроме конкретно приведенного примера с const в посте.

template<typename Tk,typename Tv>
void bimap<Tk,Tv>::eraseByValue(Tv const &v){
 typename std::map<Tv,Tk>::iterator it=this->v2k.find(v);
...
}

Например тут в map<Tv,Tk> Tv и Tk подсвечиваются правильно, изменяем Tv на Tvv, становится белым - правильно, удаляем лишнюю v, остается белым - FAIL. При перезагрузке исходника обратно принимает правильный цвет. Один раз при объявлении std::map<Tv,Tk> v2k наблюдал, что у v2k подсвечена только первая буква, сейчас воспроизвести не могу.

staseg ★★★★★
() автор топика
Ответ на: комментарий от staseg

В приведённом тобой куске кода, у меня вроде всё работает :).

GNU Emacs 24.0.92.1

Если что.

Bad_ptr ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.