Подсветка синтаксиса в emacs.Маркировка разных типов данных разными цветами - PullRequest
9 голосов
/ 13 декабря 2011

В Emacs можно ли пометить все переменные разных типов данных разными цветами? например если у меня есть следующие переменные в C / C ++, моя программа

int i,j;
float g,h;
char a,b; 

Тогда по всему исходный код i и j будет отмечен красным, g и h зеленым, a и b синим.

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

Ответы [ 2 ]

4 голосов
/ 03 января 2013

Нет. Emacs не имеет представления о типе конкретного выражения; выполнение этого было бы равносильно написанию значительной части C компилятора в ELisp.

Однако в конце туннеля есть свет.

Например, если вы редактируете код OCaml с использованием tuareg-mode, вы можете спросить Emacs о типе любого выражения, потому что компилятор ocaml предоставляет эту информацию; таким образом, вы должны быть в состоянии попросить его выделить переменные по типу. Это путь для подражания.

Увы, gcc не предоставляет эту информацию; однако его расширение gccxml делает.

Кроме того, другие C компиляторы, например, clang, предоставляют эту информацию из коробки, и есть новый файл semantic-clang.el, который опирается на эти данные. функции (хотя только для завершения, не для подсветки синтаксиса).

Итак, здесь нет ничего необычного для вас, но если вы хотите использовать clang вместо gcc и внести свой вклад в развитие CEDET, вы можете получить то, что вы хотите.

1 голос
/ 21 апреля 2013

Нет, невозможно выборочно назначить данный цвет данной переменной в emacs (или только для одной данной программы).
Однако, если вам нужна только подсветка синтаксиса , конечно, emacs выделит большинство языков, и вы даже можете создать подсветку синтаксиса для языков, о которых emacs не знает.
Ex. Смали: https://github.com/strazzere/Emacs-Smali

...