Подсветка синтаксиса тегов html в комментариях doxygen в emacs - PullRequest
2 голосов
/ 17 июля 2011

В настоящее время я использую doxymacs для синтаксического выделения комментариев и ключевых слов doxygen в файлах C ++ в совместном проекте, над которым я работаю.

Тем не менее, в проекте есть файлы "планов", которые в основном представляют собой очень длинные комментарии Doxygen с множеством задач, ошибок и т. Д., Все используют HTML-теги для организации и представления.

В настоящее время doxymacs выделяет только ключевые слова, такие как "todo", "ошибка" и т. Д. Как сделать так, чтобы синтаксис также выделял теги html в комментарии doxygen?

Я могу сделать это, переключившись на «html-режим», но тогда я потеряю стандартное выделение doxymacs «todo» и т. Д. Было бы полезно просто использовать оба режима вместе или комбинировать их.

Так, например, если бы я имел:

/*!
    \todo Test todo
    <ul>
     <li> Some text. </li>
     <li> Some more text. </li>
    </ul>

*/

Я бы хотел, чтобы теги <ul> и т. Д. Имели цвет, отличный от обычного текста в комментариях /*! */.

1 Ответ

1 голос
/ 19 июля 2011

Это будет блокировать все шрифты в <> в качестве ключевых слов в комментариях в режимах, полученных из c:

(defun my-c-font-lock-doxy-html (limit)
  (while (re-search-forward "<.+?>" limit 'move)
    (let ((beg (match-beginning 0))
          (end (match-end 0)))
      (if (nth 4 (syntax-ppss beg))
          (when (nth 4 (syntax-ppss end))
            (c-put-font-lock-face beg end 'font-lock-keyword-face))
        (goto-char end))))
  nil)

(defun my-c-mode-common-hook ()
  (font-lock-add-keywords nil '((my-c-font-lock-doxy-html))))

(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
...