【问题标题】:Syntax highlighting html tags in doxygen comments in emacs在 emacs 中的 doxygen 注释中突出显示 html 标记的语法
【发布时间】:2011-10-07 01:14:46
【问题描述】:

我目前使用 doxymacs 在我正在处理的一个协作项目的 C++ 文件中突出显示 doxygen cmets 和关键字。

然而,在项目中,有“计划”文件,它们基本上是非常长的 doxygen cmets,有很多待办事项、错误等,都使用 html 标签进行组织和演示。

目前 doxymacs 仅突出显示“todo”和“bug”等关键字。我怎样才能使其语法突出显示 doxygen 注释中的 html 标签?

我可以通过切换到“html-mode”来做到这一点,但随后我失去了“todo”等的标准 doxymacs 突出显示。只要能够同时使用两种模式或将它们结合起来就会很有用。

例如,如果我有:

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

*/

我希望&lt;ul&gt; 标签等的颜色与/*! */ cmets 中的普通文本不同。

【问题讨论】:

    标签: emacs syntax-highlighting doxygen


    【解决方案1】:

    这会将 &lt;&gt; 中的任何内容锁定为 c 派生模式中 cmets 中的关键字:

    (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)
    

    【讨论】:

    • 这只是像 C/C++ cmets 一样突出 HTML cmets 吗?如果是这样,那不是我要找的。我希望将 C++ cmets 中出现的 HTML 代码突出显示为 HTML,而不是使用注释颜色。
    • 它不会进行完整的 HTML 高亮显示,但任何 &lt;whatever&gt; 类型的标签都会作为关键字高亮显示(仅在 cmets 中)。试试看:)
    • 啊哈!酷,我试试看!谢谢!
    • 太棒了!完美运行!还给了我一些很好的代码来检查和进一步研究 emacs 字体模式:)!谢谢!一旦我被允许,我会奖励赏金:)
    • 很高兴它对您有用。顺便说一句,我不会使用我在这里所做的作为您通常如何添加突出显示的示例。我必须以一种不同寻常的方式处理事情,以确保它只会发生在 cmets 内部。
    猜你喜欢
    • 2020-06-23
    • 1970-01-01
    • 2010-09-07
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多