Emacs: Как установить цвет операторов пунктуации / C? - PullRequest
2 голосов
/ 06 апреля 2011

Мне нужно немного помочь с некоторыми проблемами подсветки синтаксиса Emacs.Я хотел бы установить цвет всех операторов C / C ++.У меня возникли проблемы, потому что «/» используется для деления (которое я хочу раскрасить), но также используется для запуска комментариев (которые я не хочу раскрашивать самостоятельно, код по умолчанию окрашивает их хорошо.) Я не могупонять, как заставить Emacs окрашивать только одну косую черту, если она не окружена другими косыми чертами.

Это то, что у меня сейчас есть:

(add-hook 'c-mode-common-hook (lambda ()
  (font-lock-add-keywords nil         
    '(("[<>:&*=+^%!~,.?;/-]" 0 font-lock-warning-face t)))
))

Но это победилонеправильно выделите что-то вроде этого:

i = 1 / 2
// Test
i=1/2//test

Конечно, если уже есть способ присвоения цвета / лица пунктуации / операторам, и я только что пропустил это, пожалуйста, дайте мне знать!

1 Ответ

0 голосов
/ 06 апреля 2011

Каждая длинная запись шрифта имеет следующий формат:

(SUBEXP FACENAME [OVERRIDE [LAXMATCH]])

t в вашем правиле соответствует записи OVERRIDE.Если вы уроните его, ваше правило не будет повторно выделять то, что уже было выделено, например комментарии и строки.

Не существует общего пакета для выделения всех операторов, но cwarn-mode выделит =и += и т. д., которые встроены в более крупные выражения, а также ; в ситуациях, когда этого не должно быть, например if (condition);.Он реализован с использованием функций, а не regexp: s, и я считаю его хорошим справочным материалом, если вы планируете реализовать относительно продвинутые правила блокировки шрифтов.

...